Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-03-2009 18:04:44

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

[Zend_Form] Je suis perdu avec les décorations

Bonjour,

Plongé dans les sites, tutos et docs, je n'arrive pas à m'en sortir avec les décorations.
Même avec ce genre de site :
- http://devzone.zend.com/article/3450-De … -Zend_Form
- http://julien-pauli.developpez.com/tuto … sentation/

Avez-d'autres ressources SVP ?

Un exemple parmi tant d'autres, je veux ajouter une une class au td du label ?

        $elementDecorators = array(array('ViewHelper'),
                                   array('Errors'),
                                   array('decorator'=>array('1er'=>'HtmlTag'), 'options'=>array('tag'=>'td')),
                                   array('label', array('tag'=>'td')),
                                   array('decorator'=>array('2e'=>'HtmlTag'), 'options'=>array('tag'=>'tr')));


Autre cas, je veux ajouter 3 select dans le même td pour créer un champ date.
Ajouter une ligne avec du texte au milieu du tableau sans que ce soit un composant.
Etc...

Merci

Hors ligne

 

#2 08-03-2009 22:16:05

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Bonsoir,

Le sujet sur l'alignement de 3 selects pour former un champ date a déjà été traité plusieurs fois sur le forum.
Tu peux jouer sur l'utilisation d'un DisplayGroup pour grouper tes 3 selects, ou bien insérer un champ avec un petit calendrier JavaScript (DatePicker), c'est qui est quand même beaucoup plus ergonomique !


Florent - Développeur Web

Hors ligne

 

#3 09-03-2009 09:36:06

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: [Zend_Form] Je suis perdu avec les décorations

Bien plus qu'une simple réponse, j'ai véritablement besoin de comprendre le fonctionnement des decorators.

Parce que sinon je vais être rendu ici toutes les 3 lignes de code.

Exemple, qui peut me répondre à une question pour un besoin aussi bête que ça ?
http://www.z-f.fr/forum/viewtopic.php?id=2725

Donc au final, avez-vous une ressource, un vrai tuto (en FR ?), qui présente les principes, les fonctions, les options possibles, etc.

Merci

Hors ligne

 

#4 09-03-2009 12:28:32

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Tu ne peux pas ajouter une classe au td de ton décorateur Label car il utilise en interne un décorateur HtmlTag et on ne peut pas passer d'options à ce dernier.

Dans ton cas, je pense que le plus simple ce serait d'écrire ton propre décorateur : http://framework.zend.com/manual/fr/zen … ators.html

C'est pas bien compliqué, il suffit d'écrire une méthode render. Tu peux t'inspirer de l'exemple My_Decorator_Composite.

Mais bon sinon, c'est vrai que les décorateurs c'est intéressant comme concept, mais aussi super lourd.

Hors ligne

 

#5 09-03-2009 22:42:20

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: [Zend_Form] Je suis perdu avec les décorations

Si malheureusement c'est compliqué hmm

Hors ligne

 

#6 23-03-2009 08:47:20

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Je suis bien incapable d'expliquer ce que sont et comment fonctionnent les décorateurs de Zend_Form. Un decorateur étant un "patron de conception" qui ajoute des fonctionnalités à une classe sans passer par l'héritage.

Pour comprendre mieux, je peux te conseiller d'explorer directement le code source. C'est ce que j'ai fait.

Et je me permets de répondre si tard à ta question pour également en poser une car je suis moi-même terriblement perplexe face aux décorateurs. J'ai l'impression que c'est la manière la moins fluide et pratique de créer un formulaire. Et pourtant j'ai eu un vague aperçu de la puissance que ça peut avoir quand on désire gérer des formulaires identiques sur l'ensemble d'un site.

Bref, vous en pensez quoi vous des décorateurs ? Vous les utilisez ? Ou vous avez abandonné ? smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#7 26-03-2009 15:09:00

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Pour ma part, plus je les utilise et plus je les aime. En fait c'est la documentation qui n'est pas très claire et qui manque d'exemples.

Hors ligne

 

#8 03-07-2009 12:47:57

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [Zend_Form] Je suis perdu avec les décorations

Bonjour, fêtons mon premier post sur ce forum....

Je suis en cour d'apprentissage sur ce framework, et j'en suis au décorateurs....
j'ai suivit cette méthode, clair qui m'ai enlever la première épine du pied:

http://wiip.fr/content/zend-form-config … -et-les-dd

mais ce que j'aimerais maintenant c'est configurer les erreurs car de listes dans des tables ça fait desordre et surtout pas très élégant.
Mais impossible de trouver comment faire.
J'ai bien lu et relu cette doc :
http://framework.zend.com/manual/fr/zen … ators.html

mais je ne sais pas comment l'appliquer,
- le nom du fichier de la classe?
- Où le mettre ?
- D'où l'appeler ?

j'ai essayer ceci :
Application/
            /config
           /controllers
           /views
           /modeles
           /form
                   /Myform.php
                   /decorateur
                               /Decorateur.php

Dans le fichier "Myform.php";

Code:

class Default_Form_Myform extends Zend_Form
{
    public function init()
    {
          $this->addPrefixPath('My_Decorator',
                             '/decorateur/',
                             'decorator');

          $this->setMethod('post');


        $this->addElement('text', 'firstname', array('decorators' => array('Composite'),
                                                     'label'    => 'Votre nom:',
                                                     'required'    => true,
                                                     'filters'    => array('StringTrim')
                                                     ));
        
        $this->addElement('text', 'lastname', array('decorators' => array('Composite'),
                                                    'label'        => 'Votre Prénom:',
                                                    'required'    => true,
                                                    'filters'    => array('StringTrim')
                                                                                                         ));
        

                $this->addElement('submit', 'submit', array('decorators' => array('ViewHelper', 
                                                                                                      array(array('td' => 'HtmlTag'),
                                                                                                      array('tag' => 'td', 'colspan' => 2)),
                                                                                                      array(array('tr' => 'HtmlTag'),
                                                                                                      array('tag' => 'tr'))
                                                      'ignore'   => true,
                                                       'label'    => 'Ajouter',
                                                    ));

        $this->addElement('hash', 'csrf', array('ignore' => true));
        
        $this->setDecorators(array('FormElements',
                                   array('HtmlTag', array('tag' => 'table',
                                                          'class'=>'users')),
                                   'Form'
                                   ));
    }
}

et bien sur ca ne marche pas. je précise que le code du fichier Decorateur.php et celui de la doc Zend.
Si quelqu'un à une idée elle est la bienvenue.
Merci d'avance


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#9 03-07-2009 15:13:28

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [Zend_Form] Je suis perdu avec les décorations

Bon avec un peu de bonne volonté, j'ai répondu à mes question :

- placer le decorateur dans la librairie :

       Library/
             Zend/
             My/
                 Decorateur/
                              Composite.php (pour la classe proposer ici : http://framework.zend.com/manual/fr/zen … ors.custom)

l'appelle depuis le fichier du formulaire (application/forms/Myform.php) :

Code:

$this->addPrefixPath('My_Decorato', 'My/Decorateur/', 'decorator');

//puis dans chaque éléments :
$this->addElement('text', 'firstname', array('decorators' => array('Composite'), 'label'    => 'Votre nom:'));

C'étais la partie simple de la chose... Maintenant j'aimerais savoir comment remplacer les <ul><li>Errors</li></ul> de erreurs, si je fait clearDecorators() ou removeDecorators() il me retir tout le message?

help please !!!
hmm big_smile

Dernière modification par Dede (04-07-2009 20:45:30)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#10 05-07-2009 18:15:15

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Dede a écrit:

mais ce que j'aimerais maintenant c'est configurer les erreurs car de listes dans des tables ça fait desordre et surtout pas très élégant.

Je vois pas où est le problème avec une liste ul/li. Tu veux les remplacer par quoi ?

Hors ligne

 

#11 05-07-2009 20:42:49

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [Zend_Form] Je suis perdu avec les décorations

J'aimerais les mettre simplement dans des div ou p.

J'ai suivi ton tuto pour remettre le formulaire dans une table et lorsqu'une erreur survient la table prend une forme très original.

C'est vrai je pourrais faire du CSS pour rectifier cela mais je cherchais un moyen plus "simple" big_smile donc div ou p serait bien, mais, c'est vrai, pas utile?

Je travaille sur chaque éléments un par un pour pouvoir ensuite construire mes application avec ce FW je cherche donc à savoir jusqu'où je peut aller? smile

Mes questions sont donc,
- quelle sont les modifications possible sur les Errors
- est-ce possible de les mettre (toutes les erreurs) dans une même div même en liste ?

Merci pour tes contribution car elle m'ont été très utile.

Dede

Dernière modification par Dede (05-07-2009 20:50:42)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#12 31-07-2009 20:07:00

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Non, inclure ceci dans la librairie n'est vraiment pas une bonne idée.

Moi j'essaye de relier mon decorator mais j'ai ce problème:

Code:

Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'General' was not found in the registry; used paths: Default_Form_Decorator_: forms/decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/'

Voici ce que j'esseye de faire dans la classe de mon formulaire, bien sur $this est mon formulaire:

Code:

$this->addPrefixPath('Default_Form_Decorator', 'forms/decorator', 'decorator');
$this->addElementPrefixPath('Default_Form_Decorator', 'forms/decorator', 'decorator');
$this->setDecorators(array('General'));

Mon arbo:

application/
--forms/
----Form.php
----decorator/
------General.php

Je suis presque sur qu'il faut définir le dossier des décorateurs quelques part...

Hors ligne

 

#13 02-08-2009 16:45:24

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Un petit up ?

Hors ligne

 

#14 02-08-2009 22:22:24

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [Zend_Form] Je suis perdu avec les décorations

Salut,
je pense qu'il faudrait dans ton bootstrap ajouter le type de resource que tu veux pour que tu puisses y accéder.
Je pense que ton autoload doit être de ce genre là:

Code:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    public function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(
            array(
                'namespace' => 'Default',
                'basePath'  => dirname(__FILE__)
            )
        );
        return $autoloader;
    }
}

Rajoutes ceci:

Code:

$autoloader->addResourceType('formDecorator', 'forms/decorators', 'Form_Decorator');

Je pense que ça devrait suffire pour lancer tes décorateurs.

A++

Hors ligne

 

#15 03-08-2009 13:57:45

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Hum...toujours la même erreur, pourtant, j'ai essayé plusieurs possibilités:


L'erreur semble vraiment indiqué que le chemin vers le decorator n'est pas bon

Code:

Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'General' was not found in the registry; used paths: Default_Form_Decorator_: forms/decorators/

Pourtant, je fais l'autoloader dans le bootstrap:

Code:

 $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath'  => dirname(__FILE__),
        ));
        
        $autoloader->addResourceType('Default_Form_Decorator', 'forms/decorators', 'decorator');
        
        return $autoloader;

Je relis évidement dans mon formulaire:

Code:

$this->addPrefixPath('Default_Form_Decorator', 'forms/decorators', 'decorator');
$this->setDecorators(array('General'));

Mon decorateur se nomme comme ceci:

Code:

class Default_Form_Decorator_General extends Zend_Form_Decorator_Abstract

Et un rappel de mon arbo:
Mon arbo:

application/
--forms/
----Form.php
----decorators/    <--- Je viens de rajouter un "s"
------General.php

Hors ligne

 

#16 04-08-2009 01:21:31

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [Zend_Form] Je suis perdu avec les décorations

Salut,
il y a une erreur dans ton addResourceType.
Les paramètres que tu indiques sont inversés. tu indiques le namespace, le path  puis le type de la ressource alors que c'est le type de la ressource, le path et le namespace.
De plus, n'indiques pas le préfix dans le namespace, l'autoloader l'ajoute automatiquement.

Donc, le code que tu as à placer dans ton bootstrap est bien celui que je t'avais fournis au-dessus:

Code:

$autoloader->addResourceType('decorator', 'forms/decorators', 'Form_Decorator');

A++

Hors ligne

 

#17 04-08-2009 14:47:02

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Hum...en effet, c'était la première chose que j'avais essayer (ton code) mais sans succès.

Je sais que l'on peut intégrer des ressources également avec le application.ini, est-ce que cela serait possible ?
L'erreur a un lien avec Zend_loader_Plugin, j'ai comme l'impression que ce code dans le bootstrap est inutile ou n'est pas bien placé.

J'ai même esssayer un truc du genre mais sans succès...:

Code:

protected function _initAutoloadPlugin()
    {
        $loader = new Zend_Loader_PluginLoader();
        $loader->addPrefixPath('decorator', 'forms/decorators', 'Form_Decorator');
        //$loader->addElementPrefixPath('Default_Form_Decorator', 'forms/decorators/', 'decorator');
        return $loader;    
    }

De plus, la documentation indique qu'il est seulement nécessaire de relier dans le script du formulaire. Pourtant, j'ai essayé de reprodurie exactement l'example avec le Composite decorator mais sans succès non plus. Ces decorators me font rager. Je passe quelques heures à chaque jour à trouver une solution mais mon projet ne peut attendre et pour celui-ci, mes formulaires seront fait directement dans mes vues parce que ces decorators sont trop complexes et peu flexible.

Hors ligne

 

#18 04-08-2009 16:55:57

itecman
Membre
Lieu: Orléans
Date d'inscription: 03-07-2009
Messages: 57

Re: [Zend_Form] Je suis perdu avec les décorations

Salut,

Je me suis un peu cassé la tête aussi sur les decorators (et à mon avis ce n'est pas encore fini). Donc pour ce que tu veut faire concernant les "errors" il existe une aide de vue que l'ont peut modifier comme suit :

Code:

// Dans la vue de rendu du formulaire

$formErrors = $this->getHelper('formErrors');
$formErrors->setElementStart("<div class='errors'>")
                   ->setElementSeparator('</br>')
                   ->setElementEnd('</div>'); 

echo $this->form ;

Ici http://framework.zend.com/manual/fr/zen … lpers.html pour la doc officielle avec ce passage qui devrait t'aider :

Code:

# formErrors($errors, $options) : génère une liste non ordonnée XHTML pour montrer des erreurs. $errors peut être une chaîne de caractères ou un tableau de chaînes ; $options peut être tout attribut que vous pourriez vouloir placer dans la balise ouvrante de la liste.

Vous pouvez spécifier des éléments ouvrants, fermants et des séparateurs de contenu alternatifs lors du rendu des erreurs en appelant les différentes méthodes suivantes de l'aide :

    * setElementStart($string) ; par défaut vaut "<ul class="errors"%s"><li>", où %s est remplacé avec les attributs spécifiés dans $options.
    * setElementSeparator($string) ; par défaut vaut "</li><li>".
    * setElementEnd($string) ; par défaut vaut "</li></ul>".

Et pour aligner les éléments, ce lien m'a été utile : http://zendgeek.blogspot.com/2009/07/ze … ators.html

Bon courage, les décorateurs n'auront pas notre peau ! smile


-- itecman smile

ZF 1.8.4 - Zend Server CE

Hors ligne

 

#19 04-08-2009 17:53:22

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Salut,

Merci pour ta solution, ce n'est pas vraiment ce que je cherchais, on ne peut toujours pas loader une classe decorator mais je crois que je vais revenir à ta solution jusqu'au jour où je décide de retourner me battre contre ces foutus decorators.

Hors ligne

 

#20 25-08-2009 20:38:06

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Zend_Form] Je suis perdu avec les décorations

Quelqu'un a réussis à faire fonctionner le custom decorator de l'example suivant ?

http://framework.zend.com/manual/fr/zen … ators.html

Code:

Plugin by name 'Composite' was not found in the registry; used paths: Composite_: /forms/Decorator/ Default_Form_Decorator

Hors ligne

 

#21 25-08-2009 21:26:18

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] Je suis perdu avec les décorations

C'est moi, ou je vois des postes en double ???

Oui, mais j'ai fait fonctionner des décorateurs perso sur le meme principe d'arbo
Qaund je l'ai dit dans l'autre posts, vérifie tes chemins et non de namespace


----
Gruiiik !

Hors ligne

 

#22 12-04-2011 17:34:58

teenshef
Nouveau membre
Date d'inscription: 12-04-2011
Messages: 1

Re: [Zend_Form] Je suis perdu avec les décorations

Merci mille fois itecman, c'est exactement ce que je cherchais depuis un bon bout de temps !

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