====== Pxxo_Widgets_Form_Generic ====== __Attention :__ ce widget est obsolète, il n'est plus maintenu, son remplaçant est [[:fr:doc:pxxo_widget_form|le widget Form]]. 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 : * elles sont placées dans la variable publique __Return__ * elles sont renvoyées par la méthode __submit__ L'utilisation de la méthode __connect__ permet de brancher automatiquement la saisie des données sur un objet permettant leur traitement. * [[http://demo.pxxo.net/widgets/demos/tester/Pxxo_Widgets_Form_Generic/|Exemple d'utilisation en ligne]] * [[fr:install|Installer]] ===== Paramètres ===== 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 : * le type **text** : * __values__ : contient la chaîne de caractères que l'on désire afficher par défaut dans le champ * __options__ : aucune valeur attendue * le type **select** : * __values__ : contient une tableau clé/valeur. La clé correspond à celle que l'on retrouve dans la liste des éléments du paramètre **''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); * __options__ : contient un tableau de clé/valeur. La clé est un identifiant interne et la valeur est le nom sous lequel s'affichera l'élément dans la liste déroulante. Exemple : $params['options'][] = array('oui'=>'Oui', 'non'=>'Non'); * le type **mail** : à documenter * le type **radio** : même principe que le type **select** * le type **password** : à documenter * le type **file** : à documenter * le type **date** : à documenter * le type **captcha** (depuis la v1.0.15) : à documenter * le type **html** : ''values'' contient la chaîne html à afficher ===== Retours ===== Pour 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++]; ... } ===== Exemples : ===== 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();