Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
C'est après avoir résolu un problème que j'en découvre un autre.
J'ai enfin réussi à décorer un élément comme je le souhaitais, seulement si j'applique les décorateurs à plusieurs élément, tous les éléments sont converti dans le même type que le premier élément du formulaire.
$decorators = array( new Zend_Form_Decorator_ViewHelper(), new Rem_Form_Decorator_DivTag(), new Zend_Form_Decorator_Label(), new Rem_Form_Decorator_LiTag(), ); $element = new Zend_Form_Element_Text('yahoo'); $element->setAttribs(array('class'=>'field text')); $element->setLabel('Testy'); $element->setRequired(); $element->setDecorators($decorators ); $form->addElement($element); $element = new Zend_Form_Element_Textarea('yahoo6565'); $element->setAttribs(array('class'=>'field text')); $element->setLabel('other'); $element->setRequired(); $element->setDecorators($decorators ); $form->addElement($element);
Ce code me rend 2 input text!!!!!!!!!
J'ai vraiment l'impression que leur formulaire est bugué.
En passant par setElementDecorators($decorators ) j'ai le même résultat.
La seule solution est de réinstancier à nouveaux les décorateurs afin de fournir des instances dfférentes à chaque élements... Quelle dommage d'autant plus que tous mes élements sont décorés sur le même shéma, n'y a t'il pas une solution ? problème connu ?
Un grand merci d'avance
Dernière modification par Mr.MoOx (17-06-2009 17:32:22)
Hors ligne
Je confirme, le module Form est un peu buggué surtout au niveau des décorateurs.
En effet pour ne pas qu'il y est de bug lors de l'attribution d'un même ensemble de décorateurs à plusieurs éléments il faut obligatoirement passé par le raccourci du nom du décorateur plutôt que d'instancier les décorateurs.
Dans l'exemple ci-dessus j'ai essayé de remplacer ma ligne instanciant le Viewhelper par la simple string 'ViewHelper', et magike ! plusq de bug ...
Alors si vous voulez créer des décorateurs perso, n'oubliez pas d'ajouter vos chemins
$form->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator/', Zend_Form::DECORATOR);
J'espère que ce post en aidera certains, car je n'ais trouvé aucun post relatant ce bug pourtant ENORME !
Je reste ouvert à toute question
Hors ligne
Euh, tu est sérieux là ?
Je crois que sa serait revenir à la base du fonctionnement php ...
Le problème se situe au niveau des instances des décorateurs.
Mais du coups c'est pas grave je passe par la méthode énoncé.
Peut être le signaler à zend
++
Hors ligne
Ceci n'est pas un bug. Ca provient d'un mauvaise utilisation des decorateurs.
Lorsque Zend_Form_Decorator_ViewHelper est instancié, il faut ensuite utilisé la méthode setHelper($helper) dessus. Ce que tu ne fait pas. Et ce mécanisme est fait automatiquement par Zend_Form lorsque tu lui passe les décorateurs sous forme de chaînes de caractères.
Hors ligne
Autant pour moi Mr Moox !
Il est donc plus justicieux de se servir de la fonctionnalité de Zend_Form pour faire le travail.
Merci pour tout.
Hors ligne
Pages: 1