Añadir comportamientos tras el envío de un Webform en Drupal 7

El módulo Webform es uno de los más utilizados en Drupal 7. Aunque existen otras posibilidades para crear formularios Web, es un módulo muy flexible y cuya funcionalidad puede incrementarse añadiendo otros módulos. Sin embargo a veces necesitamos hilar muy fino para conseguir el comportamiento deseado y entonces lo mejor es irse directamente al código.

El caso concreto

El comportamiento de un Webform creado con este módulo podría ser el envío de un correo electrónico a una cuenta concreta con los datos que se han introducido en el formulario. Esto se puede hacer con el propio módulo, ya que viene con una sección que nos permitiría configurar ese envío. Pero si queremos ir un poco más allá y enviar el correo a cuentas distintas en función del valor de un campo rellenado por el usuario, nos damos cuenta de que no podemos hacerlo. Con Webform sólo se puede enviar los resultados por correo a las mismas cuentas que hayamos configurado.

Puesto que el ecosistema de módulos que complementan a Webform es muy amplio, estoy seguro de que ya existe un módulo que nos permitiría definir ese comportamiento. No obstante la sencillez del código que debemos escribir para esto nos permite que podamos prescindir de esa opción.

Añadir comportamiento adicional

Hay que decir que este código se puede aplicar a cualquier formulario en Drupal 7, no solo a los que se generan con el módulo Webform. Para ello nos valemos del hook_form_alter al crear nuestro módulo custom. Lo que vamos a hacer es identificar el formulario al que queremos añadirle comportamiento adicional al ser enviado y especificarle un nombre de función que se va a ejecutar después de las que ya traiga por defecto. Esto es importante, ya que no vamos a sustituir las funciones que traiga el formulario para su procesamiento, sino que vamos a añadir una función nueva que se va a ejecutar después:

Con este simple hook le decimos que cuando se envíe el formulario identificado como ID-FORMULARIO ejecute después de todas las funciones que tiene que ejecutar, nuestra función NOMBRE-FUNCION-CUSTOM.

Ejemplo de comportamiento

Podemos, por ejemplo, en función del valor de un campo enviar los datos rellenados a una cuenta de correo u otra:

Ahora simplemente añadiremos la función que configura el correo a enviar mediante el hook_mail:

 

Experto en la Gestión de Proyectos Web basados en Drupal con más de 8 años de experiencia. Desarrollo Full Stack (Front-end, Back-end, Site-Builder).

No Replies to "Añadir comportamientos tras el envío de un Webform en Drupal 7"