Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-02-2010 18:23:55

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Utilisation avancée des décorateurs, besoin d'avis !

Bonsoir,

Désolé si ce message est relativement long smile. Je développe actuellement un site dans lequel je dispose d'exercices. J'ai établi une liste d'exercices et un markup HTML comme j'aimerais qu'il soit. Par exemple, un exercice de vrai/faux serait "rendu" comme ceci :


Tandis qu'un exercice à choix multiple serait rendu comme ça :

Code:

<div id="true_false-exercise">

    <p class="instructions">Pour chaque question, répondez par vrai ou par faux</p>

    <dl>
        <dt>Question n°1</dt>
        <dd>            
            <input type="radio" name="true_false_0">Vrai</input>
            <input type="radio" name="true_false_0">Faux</input>
        </dd>
    </dl>

    <dl>
        <dt>Question n°2</dt>
        <dd>            
            <input type="radio" name="true_false_1">Vrai</input>
            <input type="radio" name="true_false_1">Faux</input>
        </dd>
    </dl>

</div>

Avec la possibilité de "rassembler" plusieurs questions qui auraient une relation entre-elles :

Code:

<div id="true_false-exercise">

    <p class="instructions">Ecoutez l'extrait audio suivant et répondez aux questions suivantes par vrai ou par faux.</p>

    <dl>
        <dt>Question n°1</dt>
        <dd>            
            <input type="radio" name="true_false_0">Vrai</input>
            <input type="radio" name="true_false_0">Faux</input>
        </dd>

        <dt>Question n°2</dt>
        <dd>            
            <input type="radio" name="true_false_1">Vrai</input>
            <input type="radio" name="true_false_1">Faux</input>
        </dd>

    </dl>

</div>

Code:

<div id="multiple_choice-exercise">

    <p class="instructions">Pour chaque question, choisissez la réponse appropriée</p>

    <dl>
        <dt>Question n°1</dt>
        <dd>            
            <input type="radio" name="multiple_choice_0">Réponse A</input>
            <input type="radio" name="multiple_choice_0">Réponse B</input>
            <input type="radio" name="multiple_choice_0">Réponse C</input>
        </dd>
    </dl>

    
    <dl>
        <dt>Question n°2</dt>
        <dd>            
            <input type="radio" name="multiple_choice_1">Réponse A</input>
            <input type="radio" name="multiple_choice_1">Réponse B</input>
            <input type="radio" name="multiple_choice_1">Réponse C</input>
        </dd>
    </dl>

</div>

Je dispose donc d'une dizaine d'exercices comme ceci (les autres étant un peu plus complexes).

J'ai donc décidé de me diriger vers Zend_Form même si, au final, tout n'est pas englobé dans un <form> (la correction se fera par Javascript). Tout d'abord, est-ce la bonne solution ?

J'ai pas mal réfléchi sur comment implémenter ça, et au début j'étais parti sur une solution plus complexe avant de me rendre compte, qu'au final, je réinventais Zend_Form, Zend_Form_Element et les décorateurs... Et puis après tout, un exercice est une sorte de formulaire.

Toutefois je bloque à présent sur l'implémentation et j'aimerais avoir quelques avis d'architecture : en analysants mes divers markups, je me rends compte qu'il y a certaines redondances entre les différentes exercices. Le fait que je puisse créer mes exercices "à la volée" (ils ne seront évidemment pas hardcodés, ce serait ingérable), me demande donc de pouvoir ajouter des questions à un exercice.

Par exemple, pour le type de Vrai/Faux, je remarque qu'il y a des <dt>Question</dt><dd>Input radio</dd>. Je pense donc que le plus intelligent serait de créer des éléments en dérivant de Zend_Form_Element, ces éléments ayant des décorateurs spécifiques et des fonctions pour pouvoir définir la question (ce qu'il y a à l'intérieur du dt).

Pensez-vous que je pars dans la bonne direction, ou alors voyez-vous un meilleur moyen ? J'ai pensé aux aides de vue mais ça ne me semble pas aussi souple que cette solution...

Hors ligne

 

#2 25-02-2010 03:35:00

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

Re: Utilisation avancée des décorateurs, besoin d'avis !

En effet, si tu veux te tourner vers les decorateurs, tu pars dans la bonne directement.

Seulement, il n'est pas nécessaire de dériver les éléments de Zend_form pour utiliser des decorateurs personnalisé. Ainsi, tu peux modifier à ta guise le formatage des éléments standards de Zend_form. Une fois ton decorator fait, il sera très facile de l'appliquer à tous tes éléments dans ton site.

Pour ma part, mes decorators sont tellement personnalisé qu'ils sont relié avec des fonctions ajax. Ainsi, le simple fait d'utiliser un Élément de formulaire de type upload, j'ai un système de téléversement de fichier en temps réelle qui permet d'affier le nom du fichier ou l'image téléversé.

Bref, les décorateurs sont difficiles à comprendre aux débuts mais leurs utilités sont considérable pour généré des formulaires semblables par la suite

Hors ligne

 

#3 25-02-2010 13:46:03

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Utilisation avancée des décorateurs, besoin d'avis !

Merci (pour l'avis et pour les quelques mots de québécois appris smile). Je suis en train d'essayer de faire des décorateurs personnalisés, j'ai encore un peu de mal à en faire des aussi propres (Zend me met souvent des "id" et des "class" que je ne souhaitent pas).

En tout cas sûrement le meilleur moyen effectivement.

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