Ce Widget permet de créer simplement et rapidement des formulaires. Les valeurs saisies dans le formulaire peuvent être récupérées de 2 manières :
L'utilisation de la méthode connect permet de brancher automatiquement la saisie des données sur un objet permettant leur traitement.
Chaque paramètre est un tableau correspondant à la liste des champs. Les paramètres spécifiques à un champ du formulaire correspondent à chaque même numéro de la ligne dans chaque tableau de paramètres.
| Nom | Valeur | Description |
|---|---|---|
| groups | - | Titre du formulaire ou listes des titres des groupes de champs |
| fields | - | Liste des champs à saisir |
| sizes | - | Liste des tailles des champs (cela n'impacte que l'aspect visuel) |
| options | - | Liste des choix possibles pour un champ (si son type l'accepte) |
| required | - | Liste des champs obligatoires (true pour un champ obligatoire et false ou null sinon) |
| disabled | - | Liste des champs verrouillés (true pour un champ verrouillé et false ou null sinon) |
| values | - | Liste des valeurs pré-saisies dans les champs |
| types | - | Liste des types des champs saisis : text (défaut), mail, select, radio, checkbox, password, file, date, captcha (cf plus bas pour explications), hidden, html, tag (doc. à venir) |
| button | Envoyer | Texte du bouton pour envoyer le formulaire |
| buttons | - | Boutons supplémentaire sous formes d'un tableau associatif 'Nom du bouton' ⇒ 'Action' |
| show_buttons | true | Affiche ou cache le ou les boutons du formulaire |
| preserve_get_vars | true | Permet de conserver ou non les paramètres (de type GET) dans l'URL du formulaire |
| show_result_message | true | Affiche ou cache le message signalant que le formulaire a bien été soumit |
| result_message_label | _po('Données enregistrées') | Permet de personnaliser le message signalant que le formulaire a bien été soumit |
| show_form_when_submit | false | Permet d'afficher le formulaire juste après l'avoir soumit. Ceci permet par exemple de proposer à l'utilisateur de le modifier de nouveau. |
| label_width | '10em' | Permet de régler la largeur de la colonne des labels (celle de gauche) |
Le paramètre `groups` est un tableau associatif (clé, valeur). La clé correspond au nom du groupe et la valeur au nombre de champ que l'on veut mettre dans ce groupe. Si ce paramètre ne contient qu'une seule valeur (peu importe la clé), cela donnera un nom à l'ensemble des champs du formulaire.
Certains types attendent que l'on initialise les paramètres options et values de façon spécifiques :
options. La valeur vaut “true” si on veut sélectionner par défaut cet élément dans la liste déroulante. Exemple : $params['values'][] = array('non'=>true);
$params['options'][] = array('oui'=>'Oui', 'non'=>'Non');
values contient la chaîne html à afficherPour savoir si le formulaire a été soumis, il suffit de tester le mode du widget formulaire :
$this->putWidget('FORM',$form); if ($form->getMode() == 'submit') { ... }
Un fois le formulaire soumis, il est possible de récupérer les données soumises par le biais de l'attribut values.
$this->putWidget('FORM',$form); if ($form->getMode() == 'submit') { $i = 0; $data['username'] = $form->values[$i++]; $data['password1'] = $form->values[$i++]; $data['password2'] = $form->values[$i++]; ... }
require_once 'Pxxo/Widgets/Form/Generic.php'; // Affichage des données class traitement { function affiche($valeurs) { var_dump($valeurs); } } $trt = new traitement; // Exemple 1 $params = array(); $params['groups'] = array('Vos coordonnées'); $params['fields'] = array('Nom', 'Prénom', 'Fonction', 'Courriel'); $params['required'] = array(true, null, null, true); $params['types'] = array(null, null, 'textarea', 'mail'); $params['sizes'] = array(10, 20, array(5, 25), 40); $obj1 = new Pxxo_Widgets_Form_Generic($params); $obj1->main(); if ($obj1->connect('submit', $trt, 'affiche', array()) ) echo 'Merci'; else $obj1->dump(); // Exemple 2 $params = array(); $params['lang'] = 'Fr_FR'; $params['groups'] = array('Etat Civil' => 2, 'Coordonnées' => 3); $params['fields'] = array('Nom', 'Prénom', 'Fonction', 'Société', 'Courriel'); $params['options'] = array(null, null, array('Directeur', 'Ingénieur', 'Technicien')); $params['types'] = array(null, null,'select', null, 'mail'); $params['sizes'] = array(null, null, 23); $obj2 = new Pxxo_Widgets_Form_Generic($params); $obj2->main(); if ($obj2->connect('submit', $trt, 'affiche', array()) ) echo 'Merci'; else $obj2->dump(); // Exemple 3 $params = array(); $params['lang'] = 'en_GB'; $params['bouton'] = 'Connect'; $params['fields'] = array('Your login', 'Your password'); $params['types'] = array('text', 'password'); $params['required'] = array(true, true); $obj3 = new Pxxo_Widgets_Form_Generic($params); $obj3->main(); if ($obj3->connect('submit', $trt, 'affiche', array()) ) echo 'Merci'; else $obj3->dump();