![]() ![]() Create a simple webformįor our form, we required a date form item with the name of start_date, a date form item with the name of end_date, and a taxonomy select form item with the name lodging_category, where we choose from a list of terms. How We're Doing It: 10 StepsĮven though this example is based on working with Bookdirect, I will try to keep the code somewhat generalized so that you can hopefully adjust it to your needs. For example, if you need to alter a value before the submission is initially saved, you can use hook_webform_handler_invoke_pre_save_alter. Looking at the method name in these hooks, you can see when they act on a webform submission. hook_webform_handler_invoke_post_save_alter. ![]() hook_webform_handler_invoke_post_delete_alter.hook_webform_handler_invoke_pre_delete_alter.hook_webform_handler_invoke_post_load_alter.hook_webform_handler_invoke_post_create_alter.hook_webform_handler_invoke_pre_create_alter.Įven if the results are set to not save, webforms will still trigger this "post save" hook. Versions of these hooks are: Hook_webform_handler_invoke_post_save_alter. ![]() More specifically, since we want to act after saving and everything else has ran, the hook we want is: That hook is hook_webform_handler_invoke_alter and hook_webform_handler_invoke_METHOD_NAME_alter. And while we wanted to give our client the freedom to add more fields to the webform in the future, we wanted to keep it simple for them so they would only have to add the correct base URL and not have to worry about any code.įor our form, it wasn't necessary to save any submitted results, however, we are going to use a webform api hook that fires right after a submission would normally be saved. Our remote submission handler will define our base URL, but outside of that, the handler doesn't give us much else to do what we need to do in the UI. Ultimately, we are using a Drupal webform, to send the user to Bookdirect/Jackrabbit with their lodging search filled in. In our case, the third party site is, the client is a Destination Marketing Organization (DMO) and we need to format the submitted values to work with their jackrabbit api. ![]() We will use a remote submission handler to tell Drupal that when the form is submitted, it also needs to submit those values to a remote, third party URL. We are going to have a webform modify the submitted results into a query string, and redirect the user to a third party url with the query attached. We will look at one way to integrate the power of webforms with some third party integration and custom code. Overview: Submitting Results to a Third Party Site as a Query But every now and then a situation arises where you need to get into the guts of create some custom webform magic to get the job done. It can do even more with the multitude of its contributed modules. In Drupal 8, the Webform module can do a lot out of the box. Using hook_form_alter, add your submission handler to the form's #submit array.What We're Doing Here: Webforms and Third Party Integration We then were able to use the presence of this field to know if the form being viewed (through hook_form_alter) needed to go through our submission handler for NetSuite submission. In order to keep this configurable for our client, we implemented a hidden webform field for the submission URL. You need to know where to send the submitted form values. A switch statement would allow you to map multiple webform fields to the same NetSuite fields (if using multiple forms).Ģ. There are a couple ways in which you an accomplish this.Ī) We went the easy route and named the webform fields the same as the NetSuite form fields.ī) Alternatively, you could create a mapping function to get the appropriate field name based on the machine name. It's important that you are able to map the machine name of your webform fields to their NetSuite form counterparts. Here were the requirements from the Drupal side:ġ. Normally this is no big deal using a custom submit handler but NetSuite expects their forms to be handled a certain way so we had to get creative.īecause of Drupal's significantly useful hook system, we were able to accomplish this through a combination of webform (the actual form) configuration and a single custom module. One of the issues we encountered was meeting their desire to use Drupal's Webform module while still recording the submissions within NetSuite. Recently we did some work for a client to integrate a new Drupal website with their existing Netsuite CRM system*. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |