- Checkbox, une case Ă cocher
- Radio, un bouton radio
- Select, une liste de sélection
- Password, un champ de saisie de mot de passe
- Hidden, un champ caché
- Textarea, une zone de saisie de texte
- File, un champ d'envoi de fichier
Pour chaque type, il existe différente méthodes servant à préciser des attributs au champ.
Une méthode s'ajoute comme ceci :
$form->add('Text')
->methode1('parametre')
->methode2('parametre');
?>
Les méthodes communes à tous les types sont :
- name( string $nomDuChamp ), qui sert Ă indiquer le nom du champ
- id ( string $idDuChamp ), qui sert Ă indiquer l'id du champ
- required ( bool $leChampEstRequis ), qui sert Ă indiquer si le champ est obligatoire
- label ( string $labelDuChamp ), qui indique le libellé du champ
- value ( string $valeurParDefaut ), qui indique la valeur par défaut du champ
Les méthodes valables pour les champs de saisie de texte sont :
- maxlength ( int $nombreMaximumDeCaracteres ), qui indique le nombre maximal de caractères que peut recevoir le champ
- minlength( int $nombreMinimumDeCaracteres ), qui indique le nombre minimal de caractères que peut recevoir le champ
- regex ( regex $regex ), qui indique la regex Ă laquelle le contenu du champ doit correspondre
Pour les éléments d'option (Radio et Checkbox), [g]defaultChoice( bool $choixParDefaut ) indique si l'élément est coché / choisi par défaut.
La génération d'une liste déroulante se fait comme ceci :
$form->add('Select')
->label('Ma liste déroulante')
->options(array('Option 1' => 'valeur', 'Option 2' => 'valeur'));
//Pour avoir une liste hiérarchisée, il est également possible de faire comme ceci :
$form->add('Select')
->label('Ma liste déroulante hiérarchisée')
->options(array('Groupe 1' => array('Option 1' => 'valeur', 'Option 2' => 'valeur')));
?>
Pour indiquer le choix par défaut, on utilise là aussi
defaultChoice ( $nomDuChoixParDefaut )
Pour vous donner un exemple, une liste déroulante de quelques pays pourrait être générée comme ceci :
$form->add('Select')
->name('pays')
->label('Pays')
->options(array('Europe' => array('France' => 'fr',
'Espagne' => 'es',
'Italie' => 'it',
'Angleterre' => 'uk'),
'Amérique' => array('Etats unis' => 'usa',
'Canada' => 'cn')))
->defaultChoice('France');
Pour afficher le formulaire, il faut tout simplement faire un echo de l'instance de la classe :
echo $form; //génère le formulaire
Validation et récupération
Pour vérifier que le formulaire est conforme aux attentes spécifiées, on utilise la méthode [g]idValid($arrayUtilise), où $arrayUtilise est le plus souvent [g]$_POST, pour les données transmises par POST, ou [g]$_GET, pour les données transmises par GET :
if($form->isValid($_POST)) {
echo 'Le formulaire a correctement été rempli.';
}
else {
echo $form;
}
?>
Pour afficher d'éventuelles erreurs liées à l'entrée d'informations non correctes ou de champs manquants, on utilise la méthode
errors() :
echo $form->errors() //affiche les erreurs
?>
Pour récupérer les données sortantes d'un formulaire, c'est
get_cleaned_data ( $champARecuperer, $champARecuperer [ $champARecuperer ... ] :
// ...
$form->add('Text')
->name('nom')
->label('Nom');
$form->add('Text')
->name('prenom')
->label('Prénom');
if($form->isValid($_POST)) {
list($nom, $prenom) = $form->get_cleaned_data('nom', 'prenom');
echo 'Bonjour '.$prenom.' '.$nom.' ! ';
}
else {
echo $form;
echo $form->errors();
}
?>