Pxxo_Widgets_Form_Generic

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.

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();
fr/doc/pxxo_widgets_form_generic.txt · Dernière modification: 2008/04/09 14:29 par 193.54.109.8
 
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki
©2003-2008 Pxxo