Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Est-ce que quelqu'un pourrait m'expliquer la section "21.5.3. Décorateurs personnalisés" de la doc Zend (voir ici) concernant la création d'une classe My_Decorator_Errors ?
En fait je veux savoir si cette classe je doit la mettre dans un fichier php à part de celui de mon formulaire ou non, et si oui comment je l'appelle ?
Dans la doc, ils ont l'air de dire que puisque ma classe prend le nom 'Errors', elle sera directement appelée, mais j'ignore comment.
Qui pourrait m'éclairer svp ?
Merci.
Dernière modification par Djules (17-04-2009 10:36:46)
Hors ligne
Tu créés ta class selon la notation de Zend, par exemple, tu créé le fichier
My/Form/Decorator/Errors.php avec une class nommé My_Form_Decorator_Errors
Ensuite, tu utilises addElementPrefixPath et addPrefixPath pour dire ou trouvés tes décorateurs perso :
$this->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator/', 'decorator'); $this->addElementPrefixPath('My_Form_Decorator', 'My/Form/Decorator/', 'decorator');
Si tu as codé un décorateur errors, c'est le tient qui sera utilisé en priorité.
Hors ligne
Merci pour ta réponse nORKy.
J'arrive à appeler mon propre décorateur Errors, mais j'obtiens le message d'erreur suivant :
Fatal error: Call to undefined method My_Form_Decorator_Errors::setElement() in C:\wamp\www\videoMP\library\Form\Element.php on line 1909
et le code de mon décorateur est identique à celui de la doc.
Apparemment il cherche à appeler la fonction setElement mais je n'en ai pas défini dans mon décorateur, je veux utiliser celle par défaut ..
Dernière modification par Djules (17-04-2009 09:39:47)
Hors ligne
Hello,
Ton décorateur doit étendre Zend_Form_Decorator_Errors ou plus vraisemblablement Zend_Form_Decorator_Abstract qui contient cette méthode.
A+
Hors ligne
Ah oui effectivement j'avais oublié ça
Mais nouvelle erreur d'incompatibilité, mais en quoi ?
Fatal error: Declaration of My_Form_Decorator_Errors::render() must be compatible with that of Zend_Form_Decorator_Interface::render() in C:\wamp\www\videoMP\library\My\Form\Decorator\Errors.php on line 20
La ligne 20 correspond à la dernière ligne de mon code
Hors ligne
Hello,
Ta définition de la méthode render() n'est pas identique à celle de l'interface Zend_Form_Decorator_Interface, tu dois avoir :
public function render($content) { }
Publique avec un seul paramètre $content.
A+
Hors ligne
Je te remercie mikaelkael, l'erreur était bien là, il ne faut PAS vider la variable $content, sinon on n'affiche plus le input(ou l'élément) qui va avec.
Merci beaucoup, maintenant ça fonctionne !
Dernière modification par Djules (17-04-2009 10:41:11)
Hors ligne
De rien, peut-être à bientôt au détour de la Place de Verdun ou de la tour St Nicolas
Hors ligne
Pages: 1