Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous!
J'essaie de comprendre pourquoi il y a une différence de rendu entre addDecorators() et setDecorators() alors que je renseigne les mêmes infos...
Prenez le code suivant, copiez-collez le dans une action et regardez le résultat. J'essaie de faire un formulaire en tableau multi-lignes, multi-colonnes...
<?php $form = new Zend_Form(); $form->setDecorators(array( 'FormElements', array('HtmlTag', array('tag' => 'table')), 'Form', )); $foo = new Zend_Form_Element_Text("foo"); $foo->setLabel("foo"); $foo->addDecorators(array( array('ViewHelper', array('tag' => 'td')), array('Label', array('tag' => 'th')), array('HtmlTag', array('tag' => 'td')) )); $form->addElement($foo); $bar = new Zend_Form_Element_Text("bar"); $bar->setLabel("bar"); $bar->setDecorators(array( array('ViewHelper', array('tag' => 'td')), 'Errors', array('Description', array('tag' => 'p')), array('Label', array('tag' => 'th')), array('HtmlTag', array('tag' => 'td')) )); $form->addElement($bar); $form->addDisplayGroup(array("foo","bar"), "group"); $group = $form->getDisplayGroup("group"); $group->setDecorators(array( 'FormElements', array('HtmlTag',array('tag'=>'tr')) )); $this->view->form = $form; /** A METTRE DANS LA VUE **/ <?php echo $this->form ?>
foo et bar sont deux champs textes initialisé de la même façon a une subtilité pès:
- pour modifier les décorateurs de foo, j'ai utilisé la méthode addDecorators
- pour modifier les decorateurs de bar, j'ai utilisé la méthode setDecorators
Tel que c'est défini, le rendu des deux champs devrait être exactement le même, mais il s'avère que le champ input de bar n'est pas englobé par une balise 'td' alors qu'il devrait l'être...
Je n'arrive pas à trouver pourquoi!
Je sais que la methode setDecorators() fait un clearDecorators(), qui consiste betement à réinitialiser la propriété _decorators et à ajouter les nouveaux décorateurs. Mais si vous faites un dump de foo et de bar, vous verrez que la propriété _decorators de chacun est exactement la même! Le rendu quand à lui est différent, donc je ne comprend pas!
J'espère que je me suis fait comprendre!
Hors ligne
Pages: 1