GaboX dispose d'une gestion automatique des formulaires en frontoffice. Il vous suffit pour cela de créer le formulaire dans la vue, d'y inclure obligatoirement certains éléments, et les données seront alors automatiquement prise en charge via 2 collectors nommés posted et posted_data.
Le formulaire doit être défini avec une action vide pour poster sur la page en cours.
Il doit ensuite contenir 2 champs cachés :
Lorsque les données du formulaire sont traitées, une constante est définie automatiquement (voir partie suivante). Cette dernière vaut true si le formulaire a été traité avec succès et false sinon. Le nom de la constante est FORM_RESULT_{NOM_FORM}.
Vous pouvez donc en testant cette variable afficher un message de succès ou d'erreur.
Voici un exemple avec un formulaire s'appelant 'contact' :
<?php if(defined('FORM_RESULT_CONTACT') && FORM_RESULT_CONTACT === true) { ?>
<div class="alert alert-success" id="form_ok" role="alert">
<?=t("Merci, nos équipes vous contacteront dans les plus brefs délais.")?>
</div>
<?php } else {
if(defined('FORM_RESULT_CONTACT') && FORM_RESULT_CONTACT === false) { ?>
<ul class="form-errs">
<?php
$errors = $this->collector['posted_data']->getErrors();
if(is_array($errors) && count($errors) > 0) {
foreach($errors as $error) { ?>
<li><?=$error?></li>
<?php }
} else { ?>
<li><?=t("Une erreur s'est produite lors de l'envoi de votre demande.")?></li>
<?php } ?>
</ul>
<?php }
} ?>
Dans le fichier front.php, lorsque des données ont été postées et qu'il existe une entrée _POST['formname']
, c'est qu'un formulaire doit être traité.
Une validation des données est faite par le collector 'posted_data' s'il dispose d'une méthode isValid()
.
Si la validation échoue, la constante FORM_RESULT_{NOM_FORM} est définie à false.
Si elle réussit, elle est définie à true et toutes les données post sont enregistrées dans la table gen_posted_data. Elles sont reliées à une ligne de la table gen_posted qui contient le nom du formulaire, la date, l'IP de l'utilisateur.
Les fichiers sont enregistrés dans un dossier portant le nom du formulaire dans usr/nomprojet/var/upload
.
Un filtrage sur un certains nombres d'extensions autorisées est réalisé.
Il suffira alors de traiter les données des formulaires en fonction de leur nom pour réaliser un envoie de mail (inscription), un export csv ou utiliser une API.