Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-04-2010 11:27:41

Sishare
Membre
Date d'inscription: 09-02-2010
Messages: 89

Decorator personalisé

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 :

Code:

     $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

Code:

  'prefixPath' => array('decorator' => array(
        'My_Decorator' => 'path/to/decorators/',
    )),
    'decorators' => array('SimpleInput'),

Hors ligne

 

#2 12-04-2010 14:40:42

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: Decorator personalisé

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

 

#3 19-04-2010 11:46:46

Sishare
Membre
Date d'inscription: 09-02-2010
Messages: 89

Re: Decorator personalisé

Merci pour ta réponse, j'ai toujours un problème, la classe est bien trouvée car lorsque je fait :

Code:

        $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

Code:

    '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

 

#4 23-04-2010 10:33:17

Sishare
Membre
Date d'inscription: 09-02-2010
Messages: 89

Re: Decorator personalisé

Un petit petit petit up

Hors ligne

 

#5 23-04-2010 12:08:50

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: Decorator personalisé

J'ai résolu ce soucis en étendant Zend_Form avec en autre :

Code:

        $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

 

#6 04-05-2010 13:39:58

Sishare
Membre
Date d'inscription: 09-02-2010
Messages: 89

Re: Decorator personalisé

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

Code:

 $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

Code:

'prefixPath' => array(
                                'decorator' => array(
                                                        'MaLib_Form' => 'MaLib/Form/Decorator/',

et j'ajoute enfin le décorateur toujours à l'élément de form :

Code:

  '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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages