De CVT formulieren van SPIP

Dankzij een standaardprocedure die de naam CVT kreeg, werd het maken van dynamische formulieren in SPIP 2 een eenvoudige zaak. CVT Charger, Vérifier, Traiter, ofwel laden, verifiëren, verwerken.

Eén beeld en 3 stappen

We bekijken het voorbeeld van een contactformulier dat kan worden gemaakt met het baken #FORMULAIRE_CONTACT.

Weergave
Wanneer SPIP het baken #FORMULAIRE_CONTACT tegenkomt, herkent het dat het om een dynamisch baken gaat van het type #FORMULAIRE_xxx. Daarom zoekt het naar het skelet formulaires/contact.html om di t formulier weer te geven.
Voor de weergave van het formulier is verder niets vereist [1]; zijn visuele aspect staat volledig los van de onderstaande 3 functies.

De C, het laden
Voor de weergave van het formulier zal SPIP (als deze bestaat) de functie formulaires_contact_charger_dist() laden om de lijst van invoervelden aan het formulier te leveren, met eventuele standaardwaardes. Deze velden en waardes worden geleverd aan het skelet formulaires/contact.html.

De V van verificatie
Wanneer de bezoeker het formulier invult en op de validatieknop drukt, roept SPIP de functie formulaires_contact_verifier_dist() op om de geldingheid van het ingevoerde te verifiëren. De functie stuurt een lijst van foutmeldingen terug, corresponderend met ieder foutief ingevuld veld, of een lege lijst wanneer de invoer foutloos was.

De T, de verwerking
Was de lijst met fouten leeg, dan roept SPIP automatisch de functie formulaires_contact_traiter_dist() op die alle handelingen gaat uitvoeren voor de verwerking van de ingevoerde gegevens: het verzenden van een email, het registreren van de gegevens in de database, enz.

De functie retourneert een informatieve lijst, waaronder de bevestiging dat het ingevoerde op de juiste manier werd verwerkt.

Argumenten

Argumenten die aan het formulierbaken worden meegegeven in de vorm #FORMULAIRE_CONTACT{#ID_AUTEUR} worden automatisch (en in de volgorde van aanleveren) doorgegeven aan de 3 functies (charger, verifier, traiter).

Personalisatie

De modulaire splitsing van het formulier tussen een skelet voor de weergave en drie functies De functie charger() van een CVT-formulier, De functie verifier() van een CVT-formulier en De functie traiter() van een CVT-formulier maakt het mogelijk iedere afzonderlijke stap te personaliseren:

  • een aangepaste versie van het SPIP formulier kan in de map squelettes/ worden geplaatst;
  • de functie formulaires_contact_charger_dist() kan worden gepersonaliseerd met een functie formulaires_contact_charger();
  • de functie formulaires_contact_verifier_dist() kan worden gepersonaliseerd met een functie formulaires_contact_verifier();
  • de functie formulaires_contact_traiter_dist() kan worden gepersonaliseerd met een functie formulaires_contact_traiter()

Deze functies moeten worden gedefinieerd in een bestand contact.php.

AJAX

De standaardisatie in SPIP van het CVT formulier maakt het mogelijk te profiteren van aanvullende functionaliteit zonder enige eigen ontwikkeling.

Een goed voorbeeld hiervan is ajax, wat normaalgesproken moeilijk te programmeren is.

Met SPIP en CVT wordt dit een koud kunstje. Je hoeft slechts het formulier te omhullen met een ajax class:

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

Nu zal slechts het formuliergedeelte van de pagina worden ververst wanneer de bezoeker zijn gegevens heeft ingevoerd!

Voetnoot

[1... maar bekijk toch aandachtig het artikel De HTML-structuur van formulieren in SPIP.

Lees ook het artikel Bijvoorbeeld CVT formulieren.

Auteur Hanjo Gepubliceerd op: Aangepast: 21/03/23

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