Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai une question, peut etre un peu particuliere, mais j'aimerai utiliser ZF_Form uniquement pour la validation des champs, en MVC.
Mon code html est déjà present, donc pas besoin de faire un addelements. Sans le mvc, c facile, mais avec... je ne trouve pas d'exemples
Merci à tous,
Fabrice
Hors ligne
créer un formulaire que tu appelle que pour la validation avec les champs ayantqs les mêmes names et id que ton formulaire html
Hors ligne
Salut,
Merci, mais un petit exemple serai le bienvenue
Fabrice
Hors ligne
Voilà mon form
<?php class Form_Register extends My_Form { public function __construct($data = null, $options = null) { parent::__construct($options); $login = new Zend_Form_Element_Text('login'); $email = new Zend_Form_Element_Text('email'); $passw1 = new Zend_Form_Element_Password('passw1'); $title = new Zend_Form_Element_Radio('title'); $name = new Zend_Form_Element_Text('name'); $firstname = new Zend_Form_Element_Text('firstname'); $address = new Zend_Form_Element_Text('address'); $compl_address = new Zend_Form_Element_Text('compl_address'); $postcode = new Zend_Form_Element_Text('postcode'); $city = new Zend_Form_Element_Text('city'); $country = new Zend_Form_Element_Select('country'); $telephone = new Zend_Form_Element_Text('telephone'); $mobile = new Zend_Form_Element_Text('mobile'); $this->addElements(array($login, $email, $passw1, $title, $name, $firstname, $address, $compl_address, $postcode, $city, $country, $telephone, $mobile)); $this->addElementFilters(array('StringTrim', 'StripTags')); $login->setRequired(true) ->addValidator('Alnum', false, array(true)) ->addValidator('StringLength', false, array(3)); $email->setRequired(true) ->addFilter('StringToLower') ->addValidator('EmailAddress'); $passw1->setRequired(true) ->addValidator('Alnum') ->addValidator('StringLength', false, array(8)); $title->setRegisterInArrayValidator(false); $name->setRequired(true) ->addValidator('Alpha'); $firstname->setRequired(true) ->addValidator('Alpha'); $address->setRequired(true); $postcode->setRequired(true) ->addValidator('Digits'); $city->setRequired(true) ->addValidator('Alpha'); $country->setRegisterInArrayValidator(false); $telephone->setRequired(true) ->addValidator('Digits'); $mobile->addValidator('Digits'); } }
Et voici mon helper pour afficher les messages d'erreur :
<?php class My_View_Helper_FormError { protected $_messages; public function formError($form) { if (isset($this->_messages) && array_key_exists($form, $this->_messages)) { foreach ($this->_messages[$form] as $value) { return "<div class='input-error'>".$value."</div> "; } } } public function setMessages($messages) { $this->_messages = $messages; } }
Et dans le controller
// Validation if (!$form->isValid($_POST)) { $this->view->values = $form->getValues(); $this->view->getHelper('formError')->setMessages($form->getMessages()); }
Dans la vue :
<div> <label for="name">Nom : *</label> <input id="name" class="input" name="name" value="<?php echo $this->escape($this->values['name']); ?>" /> <?php echo $this->formError('name'); ?> </div>
Ca marche chez moi et je trouve ca plus simple que les décorateurs & co. Voilà dis moi si ca marche
Dernière modification par alien7 (15-08-2009 14:08:16)
Hors ligne
salut,
Merci pour ton code, je vais essayer çà rapidement, et je je (vous) tiens au courant .
Fabrice
Hors ligne
Salut allien7 j'ai une question stp!au niveau de ton formulaire html si tu dispose d'un truc du genre
<td> <input type="radio" name="periodicite" value="3" />3 mois <input type="radio" name="periodicite" value="12" checked/>1 an <input type="radio" name="periodicite" />Autre précisez la valeur ici (mois) <input type="text" name="autre" readonly="readonly"/><br /> </td>
alors dans la création du formulaire Form_Register tu ne t'encombre pas des différent input?tu crée un seul zend_Form_Element_Radio('periodicite')?est-ce bien cela?ou je rate quelque chose?? merci à tous...
Hors ligne
Salut,
Si tu utilises bien le framework pour la création des formulaires, alors c'est que tu utilises le composant Zend_Form_Element_Radio qui est un dérivé de Zend_Form_Element_Multi qui accepte des couples de noms/valeurs. On a dont besoin d'un seul composant pour les trois input "periodicite".
Hors ligne
@__fabrice je t'invite à regarder Zend_Filter_Input qui permet de faire se que tu veux sans avoir besoin de créer un formulaire.
Hors ligne
Pages: 1