Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Pour ceux qui comme moi souhaitent utiliser Zend_Form sans utiliser les decorateurs et en gardant un code HTML propre voici comment faire.
Exemple un formulaire de connexion :
<?php class My_Form_Login extends Zend_Form { public function init() { $this->setMethod('post') ->setName('Login') // On désactive le chargement des décorateurs généraux par défaut, puis on les recharge // à l'exception de celui-ci : ('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')) // voir la méthode 'loadDefaultDecorators' dans Zend/form.php ->setDisableLoadDefaultDecorators(true) ->addDecorator('FormElements') ->addDecorator('Form'); $options = array( 'title' => 'Nom', 'name' => 'Name' ); $name = new Zend_Form_Element_Text($options); $name->addFilter('StripTags'); $name->addFilter('StringTrim'); $name->setRequired(true); $options = array( 'title' => 'Mot de passe', 'name' => 'Pass' ); $pass = new Zend_Form_Element_Password($options); $pass->addFilter('StripTags'); $pass->addFilter('StringTrim'); $pass->setRequired(true); $options = array( 'id' => 'Submit', 'name' => 'Connexion' ); $submit = new Zend_Form_Element_Submit($options); $this->addElements(array($name, $pass, $submit)); //On désactive les décorateurs d'élements type td,dd, etc... foreach($this->getElements() as $element) { $element->removeDecorator('HtmlTag'); $element->removeDecorator('DtDdWrapper'); $element->removeDecorator('Label'); } } }
Les commentaires sont explicites je pense.
Le résultat est un formulaire nickel, débarassé des décorateurs et facilement customisable via CSS comme font les gens normaux.
Et voilà.
Hors ligne
Je ne sais pas si l'expression "code HTML propre" est celle qui convient tout à fait.
Le html généré par ZF est tout à fait propre, il passe sans problème les tests du W3C, et on peut très bien le customisé avec une CSS.
Par contre l'avantage des Dt et Dd générés par ZF c'est qu'ils permettent d'associer "informatiquement" et non pas seulement "graphiquement", l'intitulé et son input et de donner ainsi une structure logique à ta page.
Le label permet quant à lui d'améliorer l'accessibilité car il est associé à l'input (avec son attribut for).
Bonne journée
Hors ligne
Il n'est pas difficile de rajouter après ce dont tu as besoin, le principe ici c'est d'avoir le choix de s'en passer.
Tout le monde n'apprécie pas que zend_form agrémente les formulaires de ces listes de définition.
Hors ligne
Pages: 1