7. ■ Qué es/Historia
■ Creación de Webforms
■ Elementos/Validaciones
■ Formularios multi paso
■ Configuración de Webform
■ Gestión de envíos
■ Extendiendo Webform
11. ■ Webform es el módulo más popular para la creación de
formularios en Drupal 7 (>450.000 instalaciones)
■ Cuando se liberó Drupal 8 en Nov-2015 no existía
planificación para migrarlo a Drupal 8
■ El proyecto YAML Form comenzó en Diciembre de 2015 por
Jacob Rockowitz (@jrockowitz)
■ En diciembre de 2016 YAML Form fue convertido en la
versión de Drupal 8 de Webform
■ Jacob Rockowitz continúa siendo el principal mantenedor
■ Actualmente tiene >11.000 instalaciones en Drupal 8
HISTORIA
12. ■ Webform: Permite la creación de
formularios web y cuestionarios.
■ Webform Node: Proporciona un tipo de
contenido Webform que permite
integrar los formularios web en un sitio
web como nodos.
■ Webform UI: Proporciona una interfaz
de usuario para crear y mantener
formularios web.
CORE MODULES
13. ■ Webform Devel: Proporciona herramientas de
desarrollo para el módulo.
■ Webform Examples: Proporciona ejemplos de
todos los elementos y funcionalidades del webform
que se pueden utilizar para demostrar y probar
funcionalidades avanzadas.
■ Webform Templates: Proporciona plantillas que se
pueden utilizar para crear nuevos Webforms.
■ Webform Scheduled Email: Extiende el handler de
email para permitir envíos programados.
OTROS MÓDULOS
33. 1000 posibilidades!
■ Configurar los permisos de acceso de un Webform y los envíos
■ Inhabilitar el autocompletado de campos
■ Deshabilitar la validación en cliente
■ Permitir a los usuarios guardar borradores de los envíos
■ Permitir a los usuarios actualizar un envío mediante un token
seguro
■ Restringir el número de envíos a un Webform en total
■ Permitir añadir clases CSS, estilos y Javascript al Webform
■ ...
Configuración de Webform
37. ■ Los envíos de Webform son entidades y contienen todos los
datos introducidos en el Webform
■ Además incluyen metadatos: fechas, user id, IP, ...
■ Podemos exportar los envíos a diferentes formatos: CSV,
Yaml, HTML, json
Envíos
40. /**
* Implements hook_form_alter().
*/
function webform_example_form_alter(&$form, &$form_state, $id) {
if ($id == 'webform_submission_contact_form') {
$form['elements']['name']['#title'] = t('Name');
}
}
/**
* Implements hook_form_form-id_alter().
*/
function webform_example_form_webform_submission_contact_form_alter(&$form,
&$form_state) {
$form['elements']['name']['#title'] = t('Name');
}
NOTA: También es posible realizar un alter usando las propiedades de los handler
Alter de Webform
41. Todos los elementos se basan en Drupal Form API de Core.
Básico: Extender campos básicos de Webform. Objeto unico.
■ Campo de texto
■ Seleccionar lista
■ ...
Compuesto - Extender WebformCompositeBase. Se utiliza como
contenedor para múltiples elementos.
■ Dirección
■ Tarjeta de crédito
■ ...
Creando elementos personalizados
42. ■ Permiten reaccionar en los diferentes eventos lanzados en el
ciclo de vida de un formulario: alterElements, alterForm,
validateForm, submitForm, confirmForm, preCreate,
postCreate, postLoad, preSave, postSave, preDelete,
postDelete
■ https://gist.github.com/davidgil/2b0a4840b5e9315a243b4cf3
59782d80
Creando Handlers personalizados
47. ■ Compatible con la API de Drupal Form
■ Robusto desde fases iniciales, en continua evolución
■ Extensible fácilmente, convirtiéndolo en una herramienta
potente con un poco de imaginación
■ Hay alternativas, pero ni de lejos tan avanzadas y robustas:
contact + contact_storage, eform
Conclusiones