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