Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2010 00:27:29

emishi
Membre
Date d'inscription: 22-01-2010
Messages: 15

[Zend_Form][1.10.6] bien utiliser les décorateurs

Bonsoir à tous smile
Je cherche des informations pour bien utiliser les décorateurs. La première fois que j'ai cherchée à les utiliser, j'ai eu beaucoup de mal, et au final, j'ai développé les miens, mais qui étaient très limités. Aujourd'hui, je voudrais pouvoir utiliser certains qui existent déjà.

J'ai donc quelques conseils à vous demander.

- Tout d'abord, le premier se porte au niveau d'un élément submit. Les décorateurs par défaut sont ToolTip, DtDWrapper et ViewHelper. J'ai trouvé le résultat laid avec les balises <dl> et <dt>, j'ai remplacé par  Label et ViewHelper bien qu'il n'y ait pas de texte dans le label, cela me permet juste d'aligner le bouton avec mes autres champs, pensez-vous que c'est une bonne solution ?

- Ma seconde question concerne les groupements de champs. J'ai vu que l'un des décorateurs d'un displayGroup était Fieldset, par conséquent, je pensais mettre tous mes éléments de formulaire dans un ou plusieurs displayGroup. Néanmoins, cela me pose un problème : je voudrais par exemple pour la date de naissance créer un displayGroup contenant trois champs jour mois années, or je n'arrive pas à mettre un displayGroup à l'intérieur d'un autre displayGroup. Cela est-il possible ? Si ce ne l'est pas, vaudrait-il mieux que je fasse des fieldset avec des subForm, et que je n'utilise displayGroup que pour ce genre de cas ? Dans le cas où je tente de mettre le displayGroup birthdate dans le displayGroup général, que j'applique ou non le décorateur Fieldset au groupe birthdate, ce groupe va se retrouver au dessus du displayGroup général qui devait le contenir.

En attendant, voici en gros le formulaire qui est généré avec un <?php echo new Zend_Form($config->signup); ?>, le formulaire étant configuré dans un fichier .ini :

Code:

<!-- les décorateurs Form, FormElements, et HtmlTag sont appliqués au formulaire -->
<form id="signup" enctype="application/x-www-form-urlencoded" action="./" method="post">
    <div>    <!-- du a décorateur HtmlTag appliqé au displayGroup -->
        
        <!--     
            Tous les select et input possèdent les décorateurs
            ViewHelper et Label.
        -->


        <!--
            Les trois couples label/select appartiennent au groupe birthdate.
            Ce groupe est censé se situer dans le displayGroupe inscription
            juste avant le bouton submit
        -->
        
        <label for="day" class="optional">day</label>
        <select name="day" id="day">
            <option value="1" label="1">1</option>
        </select>
        
        <label for="month" class="optional">month</label>
        <select name="month" id="month">
             <option value="1" label="1">1</option>
        </select>

        <label for="year" class="optional">year</label>
        <select name="year" id="year">
            <option value="1" label="1">1</option>
        </select>

        <!-- du au décorateur fieldset appliqué au displayGroup -->
        <fieldset id="fieldset-inscription">
            <legend>Inscription</legend>

            <label for="username" class="optional">username</label>
            <input type="text" name="username" id="username" value="" />

            <label for="password" class="optional">password</label>
            <input type="password" name="password" id="password" value="" />

            <label for="submit" class="optional">submit</label>
            <input type="submit" name="submit" id="submit" value="submit" />
        </fieldset>
    </div>
</form>

J'évite de mettre le fichier de config pour pas alourdir le message, néanmoins vous pouvez le visualiser à cette adresse :
http://bit.ly/buKy9i

Merci d'avance pour votre aide smile

Bonne soirée à tous

Dernière modification par emishi (09-09-2010 00:31:18)

Hors ligne

 

#2 09-09-2010 21:21:43

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

Personellement pour le coup de la date divisé en trois champs, j'utiliserais plutôt un composant maison qui dérive de Zend_Form_Element_Xhtml ainsi que d'un décorateur maison qui met en forme la valeur avec la séparation en trois champs. Avec cette méthode tu peux aussi utiliser les décorateur standard en plus de ton décorateur maison comme au hasard le décorateur Fieldset.

En utilisant un décorateur au lieu de trois éléments séparé, on peut faire plus facilement des classes "ZendX_JQuery_Form_*" qui manipulent ces éléments vu qu'on a pas besoin de se baser sur l,hypothèse que le créateur du formualaire aura mis les bons nom. Avec une classe "ZendX_JQuery_Form_*", on peut par exemple masquer les jours qui n'existent pas dans un mois donné (31 février)  ou une date ultérieure à la date du jour (je suis né dans trois mois ...). L'inconvénient je te l'avoue, c'est pour le test des valeurs. Comme la date est divisé en trois valeurs et qu'on a qu'un seul élément de formulaire déclaré dans le zend_form, on est obligé de recréer la date dans le "setvalues()" avant de l'affecter au composant.

Hors ligne

 

#3 09-09-2010 22:19:26

emishi
Membre
Date d'inscription: 22-01-2010
Messages: 15

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

Je te remercie pour ta réponse.
Jusqu'à présent, j'utilisais trois champs texte que j'assemblais dans un groupe. Je n'ai encore jamais utilisé de classe ZendX_JQuery, je développais mon jQuery à coté, c'était en revanche pas super souple, je pense que j'essaierais d'apprendre à utiliser ces classes une fois que j'en aurais terminé avec les décorateurs.

Quand tu dis que la date est divisée en trois valeurs, et qu'on a qu'un seul élément de formulaire déclaré, tu veux dire, ça signifie que lorsque je récupère les valeurs valides du formulaire, j'obtiens une unique valeur pour la date, et c'est au moment de repeupler le formulaire par exemple que cela pose problème puisqu'à unique valeur trois champs distincts ?

Sinon, donc concernant les displayGroup, il vaut donc mieux s'en servir pour grouper les éléments dans des fieldset et pas tenter de faire des petits groupements comme pour les dtes où un simple décorateur suffit n'est-ce pas ?

Bonne soirée smile

Hors ligne

 

#4 10-09-2010 02:39:02

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

Ce que je veux dire, c'est justement l'inverse. Le formulaire attend une valeur pour la date mais le navigateur en retourne trois qui représentent les trois parties de la date.

Tel que tu présentes ton formulaire, tu veux un input (ou une liste) pour l'année, un autre pour le mois et un dernier pour le jour. Du moins c'est ce que j'ai compris. Avec la méthode que je décris, au niveau html tu as bien les trois inputs ou les trois listes ce qui fait que le navigateur retourne trois valeurs. Du côté du formulaire zend, on a déclaré qu'une seule zone de date (qui est séparé en trois éléments par le décorateur). On ne peut donc pas faire un simple "$date->setvalue($_POST['date']);" . Avec cette méthode, on est obligé de faire un "$date->setvalue(maFonctionDate($_POST['jour'],$_POST['mois'],$_POST['annee']));".

Petite précision : Pour l'affichage, c'est le décorateur qui va traiter la valeur du composant pour initialiser les trois input ou liste.

PS : Je sais avec le MVC du zend framework, on utilise pas directement $_POST. tongue

Hors ligne

 

#5 12-09-2010 00:50:17

emishi
Membre
Date d'inscription: 22-01-2010
Messages: 15

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

Bonsoir,
Je te remercie pour ta réponse smile
J'ai trouvé quelques tutos pour apprendre comment étendre Zend_Form_Element_Xhtml faut encore que je fignole, et puis après voir comment créer un validateur pour ce type de champs (je pense que je pourrais réutiliser l'ancien miens) et m'occuper des autres éléments/décorateurs. Je pense que je reviendrais avec une tonne de questions :p

Bonne soirée

Hors ligne

 

#6 12-09-2010 09:46:39

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

Hello,

Il y a les slides http://www.slideshare.net/mikaelkael/ti … -zendform, malheureusement l'enregistrement du webinar n'avait pas fonctionné.

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 12-09-2010 15:13:41

emishi
Membre
Date d'inscription: 22-01-2010
Messages: 15

Re: [Zend_Form][1.10.6] bien utiliser les décorateurs

mikaelkael a écrit:

Hello,

Il y a les slides http://www.slideshare.net/mikaelkael/ti … -zendform, malheureusement l'enregistrement du webinar n'avait pas fonctionné.

@+

Bonjour mikaelkael, effectivement, c'était bien sur ton site que j'avais trouvé le tuto pour m'expliquer big_smile (à l'adresse http://www.mikaelkael.fr/doczf/1.10/fr/ … osite.html ) smile Merci à toi
Resteà trouver un bon tuto pour trouver comment gérer les erreurs avec javascript, ils expliquent pas beaucoup dans la documentation de Zend Framework je trouve hmm

Bonne journée wink

PS : merci pour les slides, je ne l'ai avais pas trouvé, ça peut beaucoup servir pour mieux comprendre :]

Dernière modification par emishi (12-09-2010 15:16:34)

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