Bonjour,
J'aimerai savoir s'il serait possible que l'un d'entre vous pourrait me montrer un code complet d'un Zend_Form simple utilisant des décorateurs ? Parce que je ne saisis vraiment pas la manière dont ceux-ci se mettent en place.
Merci.
Bonjour,
J'aimerai savoir s'il serait possible que l'un d'entre vous pourrait me montrer un code complet d'un Zend_Form simple utilisant des décorateurs ? Parce que je ne saisis vraiment pas la manière dont ceux-ci se mettent en place.
Merci.
Le mieux pour comprendre les décorateurs est de te faire des tests.
Commence déjà par voir à quoi ressemble les décorateurs par défaut.
$form->getElement('unChampTexte')->getDecorators(); et $form->getDecorators()
Les décorateurs s'ajoutent les uns après les autres (une forme de pile). Ils s’englobent les uns derrière les autres. La configuration de 'placement' sur append ou prepend permet de "sortir" créer des voisins.
Mon explication est peut-être pas très compréhensible, mais ça donne une idée.
Sinon, ce que je peux dire, c'est qu'une fois l'utilisation des décorateurs comprise, c'est assez puissant à utiliser.
Merci de me répondre.
Je vais sûrement passer pour un novice mais... où faut il placer ce bout de code ?
Un peu où tu veux.
Soit dans le controlleur, dans une vue, etc.
Le but est de voir les décorateurs sous forme de tableau avec un var_dump ou print_r.
En fait je commence à saisir.
J'ai crée un dossier "maLib" dans library, puis un "Form" et "Decorator".
Dans ce dossier (decorator), j'ai crée une classe "MaLib_Form_Decorator"
Je souhaite faire marcher ce bout de formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php class MaLib_Form_Decorator_Html extends Zend_Form_Decorator_Abstract { public function render($content) { $placement = $this->getPlacement(); switch ($placement) { case self::APPEND: return $content . $this->_options['html']; break; case self::PREPEND: return $this->_options['html'] . $content; break; } } }
(tuto pris ici : http://wiip.fr/content/un-decorator-...d_form_element )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $submit = new Zend_Form_Element_Submit('create'); $submit->setLabel('Créer le site') ->addPrefixPath('MaLib_Form_Decorator', '/library/maLib/Form/Decorator/', 'decorator') ->setDecorators(array( 'ViewHelper', array('Html', array('html' => ' ou <a href="/">Annuler</a>')) ));
et j'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: Exception caught by form: Plugin by name 'Html' was not found in the registry; used paths: ZendX_JQuery_Form_Decorator_: ZendX/JQuery/Form/Decorator/ MaLib_Form_Decorator_: /library/maLib/Form/Decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/
Tu es sur de ce chemin : "/library/maLib/Form/Decorator/" ?
Le premier / représente la racine du système.
Si "library" est dans ton répertoire de projet, normalement ceci devrait fonctionner :
APPLICATION_PATH.'/../library/maLib/Form/Decorator/'
Partager