27 nov 2014
ressources-formulaire-contact-avec-textures-1

Créer un formulaire avec Zend_Form

1) Un simple formulaire
Dans ce mini tuto je vais vous montrer pas à pas comment créer un formulaire avec Zend_Form. En partant du principe que votre projet est déjà en place.

Pour de simple formulaire vous pouvez directement instancier Zend_Form  depuis votre controller. Le configurer et lui ajouter des éléments. (text, Select, Textarea …)

Exemple :

$form = new Zend_Form;
$form->setAction('/resource/process')->setMethod('post');
$form->setAttrib('id', 'login');
$form->addElement(new Zend_Form_Element_Text('username'));
$form->addElement('text', 'username');

Puis le rendre à la vue

$this->view->form = $form;

enfin dans votre page de vue

<?php echo $this->form; ?>

Ceci-ci vous créera un formulaire avec les décorateurs par défaut.

Maintenant imaginons que nous voulions personnaliser notre formulaire de A à Z !!!

2) Le formulaire de mes rêves

2.1) Déclaration du formulaire
Dans cette partie on va utiliser toute la modularité de zend form afin de pouvoir personnaliser un maximum le rendu du formulaire.

Nous allons déclarer notre formulaire dans notre dossier library
« library/Form/Notreclasse.php »


<?php

class QK_Form_AuthLogin extends Zend_Form
{
public function init()
{

$this->setDisableLoadDefaultDecorators(true);

$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'formulaire/connexion.phtml')),
'Form'
));

$this->addElement(
'text', 'username', array(
'label' => 'Identifiant :',
'required' => true,
'filters'    => array('StringTrim'),
'attribs'   => array("class" => "login-inp")
));

$this->addElement('password', 'password', array(
'label' => 'password :',
'required' => true,
'attribs'   => array("class" => "login-inp")
));

$this->setMethod('post');

Ici, nous avons fait appel à la méthode « setDisableLoadDefaultDecorators » afin de désactiver les décorateurs par défaut.
Ensuite, nous avons déclaré les décorateurs qui nous intéressaient avec « setDecorators »
« Viewscript » nous permet de définir une sous-vue à notre formulaire pour pouvoir le mettre en forme comme bon nous semble.
Cette sous-vue sera visible dans le dossier de notre module :
« notremodule/views/scripts/connexion.phtml ».

et pour finir, nous avons déclaré nos différents éléments.

2.2) Notre sous-vue

Notre script de vue « connexion » va nous permettre de mettre en forme notre formulaire à l’aide de notre variable de vue « $this-&gt;element ».

exemple:

<div id="login-inner">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<th>
 <?php echo $this->element->username->getLabel() ?>
</th>
<td>
 <?php echo $this->element->username->removeDecorator("DtDdWrapper")->removeDecorator("label") ?>
</td>
</tr>
<tr>
<th>
 <?php echo $this->element->password->getLabel() ?>
</th>
<td>
 <?php echo $this->element->password->removeDecorator("DtDdWrapper")->removeDecorator("label") ?>
</td>
</tr>
<tr>
<td>
 <?php echo $this->element->submit->removeDecorator("DtDdWrapper")->removeDecorator("label") ?>
</td>
</tr>
</table>
</div>

Ici deux méthodes utiles :
« getLabel » qui nous sert à récupérer le label de l’élément
et « removeDecorator » afin de supprimer les décorateurs et d’afficher juste l’élément souhaité.

Enfin, vous pouvez instancier l’objet depuis le controller que vous souhaitez et l’afficher dans la vue comme vous le faites d’habitude.

exemple :

Dans votre controller

$this->view->form = new Projet_Form_VotreForm();

et dans votre page de vue

<?php echo $this->form; ?>

Voilà, vous avez votre formulaire personnalisé qui apparaît !

N’hésitez pas à déposer un commentaire , une question, une critique constructive …. je vous lirais avec plaisir. au revoir ! ;)

Laissez un commentaire