Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'ai créer un décorator perso que j'ai mis dans Application/Library/zend/decorator mais il ne fonctionne pas :
j'ai essayé plusieurs path sans succès :
$this->addElementPrefixPath('My_Decorator', 'Zend/Form/Decorator/', 'decorator'); $decorator=new My_Decorator_SimpleInput(); $login = new Zend_Form_Element('login', array( 'label' => 'login :', 'belongsTo' => 'connexion', ));
j'ai essayé par
'prefixPath' => array('decorator' => array( 'My_Decorator' => 'path/to/decorators/', )), 'decorators' => array('SimpleInput'),
Hors ligne
Bonjour, il ne faut pas mettre vos fichiers dans le répertoire Zend, mais dans un répertoire séparé, par exemple : 'library/MonApp' sinon vous serez condamné à définitivement utiliser cette version du framework, ou alors avoir beaucoup de problèmes pour la mettre à jour.
Ensuite vous ajoutez cette ligne dans application.ini:
autoloadernamespaces[] = "MonApp_"
Finalement, si vous placez le fichier dans library/MonApp/Form/Decorator/MyDecorator.php alors il faut que la classe soit nommée Mon_App_Form_Decorator_MyDecorator, le loader se chargera de la retrouver.
Hors ligne
Merci pour ta réponse, j'ai toujours un problème, la classe est bien trouvée car lorsque je fait :
$decorateur= new Defis_Form_Decorator_SimpleInput();
pas d'erreur, par contre lorsque je lutilise il me dit que rien n'est trouvée dans le registre.
J'ai bien rajouté autoloadernamespaces[] = "Defis_" créer un dossier Defis/form/decorator/simpleInput.php dans library. J'ai essayer aussi
'prefixPath' => array('decorator' => array( 'Defis' => './Form/Decorator/', )),
mais il doit y avoir une erreur de path : Plugin by name 'SimpleInput' was not found in the registry; used paths: Defis_: ./Form/Decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/
Hors ligne
Un petit petit petit up
Hors ligne
J'ai résolu ce soucis en étendant Zend_Form avec en autre :
$this->addElementPrefixPath('ND_Validate', 'ND/Validate', 'validate') ->addElementPrefixPath('ND_Decorator', 'ND/Decorator', 'decorator') ->addElementPrefixPath('ND_Filter', 'ND/Filter', 'filter');
A toi d'adapter ca
Hors ligne
Bon j'ai résolus mon problème mais d'une manière crado à mon avis. J'y y été à taton pour découvrir la chose suivante : mon arobrecence est la suivent Library->Zend->.... et Library ->MaLib->Form->Decorator
Dans le dernier dossier decorator deux fichier nommé SimpleInput et SimpleLabel qui étendent tout deux la classe zend_form_decorator_abstract dont le nom déclaré (de la classe) est respectivement Malib_Form_Decorator_SimpleInput et Malib_Form_Decorator_SimpleLabel
Pour leur utilisation j'ai inclut ma library dans le .ini avec autoloadernamespaces[] = "MaLib"
Ensuite c'est la que les choses deviennent bizarre, j'ai du déclarer une variable pour utiliser ces deux décorateurs, c'est à dire que je déclare
$decorator=new Malib_Form_Decorator_SimpleInput () et $decorator2=new Malib_Form_Decorator_SimpleLabel()
QUE JE NE REUTILISE MEME PAS!
ensuite j'ajoute un prefixPath à mon élément de form avec
'prefixPath' => array( 'decorator' => array( 'MaLib_Form' => 'MaLib/Form/Decorator/',
et j'ajoute enfin le décorateur toujours à l'élément de form :
'decorators' => array( 'Decorator_SimpleInput', 'Decorator_SimpleLabel',
Ce qui me pose soucis c'est surtout le fait de devoir déclarer deux variables pour en quelques sortes inclures mes décorators.... sachez que j'ai essayez beaucoups de combinaison et celle là est la seule qui fonctionne.
Si quelqu'un peut m'éclairer....
Hors ligne