Table des matières

Pxxo_Widgets_Form_Generic

Attention : ce widget est obsolète, il n'est plus maintenu, son remplaçant est 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 :

L'utilisation de la méthode connect permet de brancher automatiquement la saisie des données sur un objet permettant leur traitement.

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 :

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();