Los formularios CVT de SPIP 2.0

La realización de formularios dinámicos se ha simplicado desde SPIP 2.0 gracias a una arquitectura clara de 3 etapas: Carga, Verificación, Tratamiento.

En 3 etapas

Carga
Cuando Spip encuentra una baliza del tipo #FORMULAIRE_CONTACT, utiliza el esqueleto formulaires/contact.html para mostrar el formulario y la función formulaires_contact_charger_dist () para proporcionar una lista de campos en el formulario, con valores predeterminados eventuales.

Verificación
Cuando el usuario o usuaria completa el formulario y hace clic en el botón de validación, Spip invoca la función formulaires_contact_verifier_dist() para comprobar la validez de los datos. La función devuelve una lista de mensajes de error en cada uno de los campos erróneos, o una lista vacía si no hay ningún error.

Tratamiento
Si la función de verificación no devolvió ningún error, Spip llama automáticamente a la función de tratamiento del formulario formulaires_contact_traiter_dist() que podrá realizar todas las operaciones de tratamiento: el envío de un mensaje por email, guardar los datos en la base de datos...

La función de tratamiento envía un mensaje confirmando que los datos han sido procesados correctamente.

Argumentos

Los argumentos pasados a la baliza del formulario de la forma #FORMULAIRE_CONTACT{#ID_AUTEUR} son automáticamente pasados a las funciones de carga, verificación y tratamiento en el mismo orden.

Personalización

Distribuir modularmente un formulario en 1 esqueleto y 3 funciones separadas permite personalizar cada uno de los pasos independientemente :
-  El esqueleto de un formulario de SPIP puede personalizarse dentro de la carpeta /squelettes
-  La función formulaires_contact_charger_dist() se puede personalizar mediante la definición de la función formulaires_contact_charger()
-  La función formulaires_contact_verifier_dist() se puede personalizar mediante la definición de la función formulaires_contact_verifier()
-  Análogamente formulaires_contact_traiter_dist() se puede personalizar mediante la definición de la función formulaires_contact_traiter()

Estas funciones se definen en un archivo contact.php

AJAX

La modularidad le permite a SPIP tratar el formulario a través de una petición asincrónica XML o AJAX y simplicar así radicalmente el desarrollo de este tipo de formularios.

Para ello, simplemente es necesario encapsular el formulario en una div con la clase ajax:

<div class='ajax'>
#FORMULAIRE_CONTACT
</div>

Cuando los usuarios o usuarias envien el formulario, la petición será enviada por SPIP asincrónicamente a las funciones, y la respuesta retornará de la misma manera. El usuario tendrá una experiencia más rápida porque no deberá recargar toda la página.

Compatibilidad con los viejos formularios dinámicos de SPIP

Los viejos formularios de SPIP que se basan en un esqueleto y una serie de funciones del tipo balise_formulaires_xxx, balise_formulaires_xxx_stat, y balise_formulaires_xxx_dyn siguen siendo funcionales, pero es aconsejable migrarlos progesivamente a la arquitectura CVT.

Técnicamente CVT es un superconjunto implementado por las funciones genéricas balise_formulaires_xxx, balise_formulaires_xxx_stat y balise_formulaires_xxx_dyn.

Como tal, es posible para necesidades complejas, especialmente la recogida automática de argumentos, definir sus propias funciones balise_formulaires_contact, balise_formulaires_contact_stat.

Autor o autora tin Publicado el: Actualizado: 21/03/23

Traducciones: català, English, Español, français, Nederlands