Els formularis CVT d’SPIP 2.0

La realització de formularis dinàmics s’ha simplificat amb SPIP 2.0 gràcies a un protocol clar fragmentat en una vista (o esquelet) per la visualització, i tres etapes: Carregar, Verificar, Tractar (CVT).

Una vista i 3 etapes

Agafem l’exemple d’un formulari de contacte que es vol gestionar amb l’etiqueta #FORMULAIRE_CONTACT.

Publicació
Quan SPIP troba l’etiqueta #FORMULAIRE_CONTACT, reconeix que es tracta d’una etiqueta del tipus #FORMULAIRE_xxx. Llavors cerca l’esquelet formulaires/contact.html per mostrar el formulari.
No hi ha cap més requisit previ per la visualització del formulari [1], cosa que permet la seva integració visual independentment de les 3 funcions que trobem més avall.

Càrrega
Amb la visualització de l’esquelet, SPIP crida, si existeix, la funció formulaires_contact_charger_dist() per tal de proporcionar la llista dels camps introduïts al formulari, amb els eventuals valors per defecte. Aquests camps i valors seran introduïts a l’esquelet formulaires/contact.html que, per tant, els utilitza.

Verificació
Quan l’internauta omple el formulari i clica al damunt del botó de validació, SPIP crida la funció formulaires_contact_verifier_dist() per verificar la validesa de les dades. La funció reenvia una llista de missatges d’error corresponents a cada camp erroni, o una llista buida si no hi troba errors.

Tractament
Si la funció de verificació no ha retornat errors, llavors SPIP crida automàticament la funció de tractament del formulari formulaires_contact_traiter_dist() que podrà realitzar totes les operacions de tractament del formulari: enviament d’un correu electrònic, registre a la base de dades...

La funció de tractament reeenvia una llista d’informació amb un missatge confirmant que les dades s’han processat correctament.

Arguments

Els arguments passats a l’etiqueta formulari, sota la forma #FORMULAIRE_CONTACT{#ID_AUTEUR} són tramesos automàticament a les funcions carregar, verificar, tractar, en el mateix ordre.

Personalitzacions

La fragmentació modular del formulari en un esquelet de visualització i tres funcions: Carregar, Verificar i Tractar, permet personalitzar amb independència cadascuna de les etapes:

  • l’esquelet d’un formulari d’SPIP es pot personalitzar a la carpeta squelettes/
  • la funció formulaires_contact_charger_dist() es pot pesonalitzar definint la funció formulaires_contact_charger()
  • la funció formulaires_contact_verifier_dist() es pot personalitzar definint la funció formulaires_contact_verifier()
  • la funció formulaires_contact_traiter_dist() es pot personalitzar utilitzant la funció formulaires_contact_traiter()

Aquestes funcions es defineixen a l’arxiu contact.php

AJAX

L’estandardització a SPIP del formalisme CVT permet beneficar-se de funcionalitats suplementàries sense desenvolupament.

En particular, per millorar la fluïdesa de la navegació i el temps de resposta que percep l’internauta, la tècnica consisteix en sotmetre el formulari per una petició asincrònica enviada pel navegador sense carregar tota la pàgina.
Aquest tipus de petició, sovint designada per l’acrònim l’acronyme AJAX és, en general, pesada de desenvolupar.

SPIP i CVT simplifiquen radicalment l’aplicació del tractament AJAX del vostre fornulari.

Per això, n’hi ha prou encapsulant el vostre formulari en un div amb la classe ajax :

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

Quan l’internauta sotmetrà el formulari, aquest s’enviarà a SPIP mitjançant una petició asincrònica, i SPIP només retornarà el resultat del formulari després d’una verificació i tractament eventual. L’internauta tindrà una resposta més ràpida, ja que no haurà recarregat tota la pàgina, sinó només la zona que correspon al formulari!

Compatibilitat amb els antics formularis d’SPIP

Els antics formularis dinàmics d’Spip descansen en un esquelet i una colla de funcions balise_formulaires_xxx, balise_formulaires_xxx_stat, i balise_formulaires_xxx_dyn restent fonctionnels, però és aconsellable de migrar-los progressivament cap al formalisme CVT.

Tècnicament CVT és una superposició implementada per les funcions genèriques balise_formulaires_xxx, balise_formulaires_xxx_stat, i balise_formulaires_xxx_dyn.

Respecte a això, és possible, per exemple per a una col·lecta automàtica d’arguments, definir les pròpies funcions balise_formulaires_contact_stat.

Notes

[1... però consultarem amb interès la pàgina Estructura HTML dels formularis d’SPIP.

Autor merce Publié le : Mis à jour : 21/03/23

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