Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je dois gérer l'affichage des erreurs d'une manière particulière j'ai donc créé un Décorateur personnel (Black_Form_Decorator_Erreurs), lorsque je l'appel dans ma classe Form tout va bien :
class Structure_Form_UtilisateurAjout extends Zend_Form { public function init() { $this->addPrefixPath('Black_Form_Decorator', 'Black/Form/Decorator', 'decorator'); $this->setElementDecorators(array( 'ViewHelper', array('Erreurs', array('elements' => array('start' => '<span %s>', 'end' => '</span>', 'separator' => ' - '), 'ignore' => array('types' => array('hash')))), array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'valeur')), array('Label', array('tag' => 'td', 'class' => 'libelle')), array(array('row' => 'HtmlTag'), array('tag' => 'tr')), )); $this->setDecorators(array( 'FormElements', array('HtmlTag', array('tag' => 'table', 'class' => 'modification')), 'Form' )); $this->addElement('text', 'nom', array( 'label' => 'Nom :', 'required' => true, 'validators' => array( array('validator' => 'StringLength', 'options' => array(4, 20)) ) )); // ... } }
J'ai également créé une classe Form typique qui est chargée de factoriser un peu tout ça (Black_Form_Ajout), j'arrive bien à un faire hériter mon Form du départ :
class Structure_Form_UtilisateurAjout extends Black_Form_Ajout { public function init() { //... } }
Mon Form typique :
<?php class Black_Form_Ajout extends Zend_Form { public function __construct($options = '') { parent::__construct($options); $this->addElement('hash', 'csrf', array( 'ignore' => true, 'decorators' => array(), 'disableLoadDefaultDecorators' => true )); $this->setMethod('post'); } }
Mais lorsque je combine les deux ça plante (avec ou sans le addPrefixPath) :
<?php class Black_Form_Ajout extends Zend_Form { public function __construct($options = '') { parent::__construct($options); // $this->addPrefixPath('Black_Form_Decorator', 'Black/Form/Decorator', 'decorator'); $this->setElementDecorators(array( 'ViewHelper', array('Erreurs', array('elements' => array('start' => '<span %s>', 'end' => '</span>', 'separator' => ' - '))), array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'valeur')), array('Label', array('tag' => 'td', 'class' => 'libelle')), array(array('row' => 'HtmlTag'), array('tag' => 'tr')), )); $this->setDecorators(array( 'FormElements', array('HtmlTag', array('tag' => 'table', 'class' => 'modification')), 'Form' )); // Et une protection anti CSRF $this->addElement('hash', 'csrf', array( 'ignore' => true, 'decorators' => array(), 'disableLoadDefaultDecorators' => true )); $this->setMethod('post'); } }
L'erreur :
Warning: Exception caught by form: Plugin by name 'Erreurs' was not found in the registry; used paths:
Zend_Form_Decorator_: Zend/Form/Decorator/
Stack Trace:
#0 /var/www/library/Zend/Form/Element.php(1808): Zend_Loader_PluginLoader->load('Erreurs')
#1 /var/www/library/Zend/Form/Element.php(2188): Zend_Form_Element->_getDecorator('Erreurs', Array)
#2 /var/www/library/Zend/Form/Element.php(1961): Zend_Form_Element->_loadDecorator(Array, 'Erreurs')
#3 /var/www/library/Zend/Form/Element.php(2021): Zend_Form_Element->getDecorators()
#4 /var/www/library/Zend/Form/Decorator/FormElements.php(101): Zend_Form_Element->render()
#5 /var/www/library/Zend/Form.php(2908): Zend_Form_Decorator_FormElements->render('')
#6 /var/www/library/Zend/Form.php(2924): Zend_Form->render()
#7 /var/www/application/modules/structure/views/scripts/utilisateur/ajout.phtml(7): Zend_Form->__toString()
#8 /var/www/library/Zend/View.php(108): include('/var/www/applic...')
#9 /var/www/library/Zend/View/Abstract.php(888): Zend_View->_run('/var/www/applic. in /var/www/library/Zend/Form.php on line 2929
Avez-vous une idée d'om ça peut venir ?
Pour votre aide,
Par avance,
Merci
Hors ligne
Pages: 1