Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2011, 09h16   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Par défaut Exemple de décorateur

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.
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 09h37   #2
Membre régulier
 
Inscription : juin 2004
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 66
Points : 86
Points : 86
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.
Blount est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 09h46   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Merci de me répondre.

Je vais sûrement passer pour un novice mais... où faut il placer ce bout de code ?
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 09h56   #4
Membre régulier
 
Inscription : juin 2004
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 66
Points : 86
Points : 86
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.
Blount est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 10h07   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
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"

Code :
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;
    }
  }
}
Je souhaite faire marcher ce bout de formulaire :
Code :
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>'))
		       ));
(tuto pris ici : http://wiip.fr/content/un-decorator-...d_form_element )

et j'ai l'erreur :
Code :
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/
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 10h31   #6
Membre régulier
 
Inscription : juin 2004
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 66
Points : 86
Points : 86
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/'
Blount est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 10h40   #7
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Est-ce que cela a un rapport avec le fait que je n'étends pas "Zend_Form" mais "ZendX_JQuery_Form" ?

J'ai cette arborescence :
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 10h59   #8
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Il semble que l'erreur venait du fait qu'il fallait que j'appelle mon fichier "Html" dans

/library/maLib/Form/Decorator/Html.php

Mais cela m'a généré une autre erreur :

Code :
Warning: include_once(/maLib/Form/Decorator/Html.php): failed to open stream: No such file or directory in /var/www/html/zendTest/library/Zend/Loader/PluginLoader.php
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 11h20   #9
Membre régulier
 
Inscription : juin 2004
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 66
Points : 86
Points : 86
Comme je te l'ai dit plus haut, le chemin vers ta library doit être faux.
Enlève le premier slash (/) dans ton chemin.
Blount est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 11h24   #10
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Merci

J'ai une autre erreur.

Code :
Notice: Undefined index: html in /var/www/html/zendTest/library/maLib/Form/Decorator/Html.php on line 8
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 11h28   #11
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
J'ai remplacé le 'html' par 'Html', et il me semble que cela fonctionne, sauf que le label ne fonctionne pas.
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 11h42   #12
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Et pour finir cet épique décorateur, le label ne s'affichait pas à cause ... d'un accent
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h33.


 
 
 
 
Partenaires

Hébergement Web