En un proyecto que estaba supervisando necesitábamos que un formulario construido con el módulo Webform envíe los datos a un sistema externo. Es decir, que el action de dicho formulario apunte a una URL fuera de Drupal. Por otra parte, el name de cada uno de los input del formulario debía tener un valor específico para que sea procesado correctamente.
Entre las alternativas de módulos existentes que resuelvan este problema encontramos Webform Remote Post.
Las dependencias de este módulo son:
La instalación es estándar.
Una vez instalado el módulo, genera una nueva pestaña Remote Posts al momento de ver un Webform, es decir, si vamos al nodo e ingresamos al Webform, veremos una pantalla similar a la siguiente:
Ingresamos a la pestaña generada. Nos solicita un Label, que servirá como identificador en la lista y un Target URL, que es la URL hacia donde se va a enviar el POST, es decir, el action del formulario.
Al llenar estos datos, nos pedirá seleccionar un Post Type, permitiendo seleccionar entre 2 opciones:
- x-www-form-urlencoded
- JSON
Para la gran mayoría de los casos será suficiente dejarlo en la opción x-www-form-urlencoded. En realidad es la forma en que se envían los formularios web de forma predeterminada. En caso que necesitemos que se envíe como JSON, escogemos esta opción.
Guardamos nuestra configuración, y veremos que se pueden agregar más Remote Post, para el mismo formulario. Es decir, el módulo me permite agregar más de una URL externa para el envío de los datos.
Ahora, cada vez que enviemos el formulario Webform que hemos configurado se enviará a todos los remote host configurados.
El name de los datos enviados
Como mencionábamos otro de los aspectos a considerar es el name de los datos enviados. Poder controlar los mismos es importante para interactuar con sistemas externos, especialmente aquellos que fijan nombres o convenciones de nombre.
Webform coloca un nombre a los elementos del formulario. Este valor se puede editar. Ingresamos a la definición de un campo y veremos una pantalla, en la cual se permite modificar el "Field Key". En los comentarios de esta opción de configuración veremos que este "key" será usada como el atributo name del elemento. Si queremos comprobarlo y vamos al webform generado veremos que en realidad webform crea un array llamado submitted, y que utiliza para los nombres de los elementos. De tal manera que, por ejemplo, si hemos configurado el "Field Key" de un input con el valor "apellido", el nombre de este elemento en el formulario sería submitted[apellido]. Por suerte Webform Remote Post se encarga también de este detalle, y para el envío remoto utiliza exactamente el nombre configurado.
Me pareció interesante el artículo
Añadir nuevo comentario