Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2011, 10h10   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Par défaut Modifier formulaire selon action de l'utilisateur

Bonjour,

Je cherche la manière la plus efficace de faire la chose décrite ci-après. Un lien vers un tutoriel serait idéal.

Soit un formulaire contenant une liste déroulante (Zend_Form_Element_Select) permettant à l'étudiant connecté de choisir son établissement d'origine.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        // Établissement d'origine de l'étudiant
        // Liste de choix
        $etb_id = new Zend_Form_Element_Select('etb_id');
        $etb_id
            ->setLabel('Choisir dans la liste')
            ->setRequired(false);
 
        $etablissement = new Application_Model_DbTable_Etablissement();
        $result = $etablissement->fetchAll();
        $liste_etablissements = array();
        foreach($result as $etb)
        {
            $liste_etablissements[$etb->etb_id] = $etb->etb_nom;
        }
        $etb_id->addMultiOption('', '0');
        $etb_id->setMultiOptions($liste_etablissements);
Si cette information est déjà connue, l'établissement est déjà sélectionné et les champs adresse, code postal, ville, téléphone de l'établissement sont eux aussi renseignés.

Si par contre elle n'est pas connue, les autres champs relatifs à l'établissement sont vides.

1) Besoin classique, j'aimerais que, lorsque l'étudiant choisit un établissement dans la liste, les autres champs se remplissent tout seul.
J'imagine qu'il faut du Javascript quelque part pour faire ça mais comment ça se passe plus concrètement avec Zend_Framework ? N'y a t-il pas déjà des outils tout prêt pour le faire ?

2) Autre besoin, je veux offrir la possibilité à l'étudiant d'ajouter un établissement s'il trouve pas le sien dans la liste.
Vaut-il mieux :
a) Prévoir un lien ou un bouton qui ouvrira un autre formulaire pour créer un nouvel établissement ?
b) Ajouter un Zend_Form_Element_Text permettant à l'étudiant de saisir directement le nom de l'établissement, tous les autres champs relatifs aux données à fournir pour un nouvel établissement se trouvant également dans le formulaire principal ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 10h13   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Ça n'inspire pas grand monde on dirait...

Pour le moment, j'ai opté pour une approche légèrement différente. Selon que l'établissement d'origine de l'étudiant est déjà connu ou non, j'affiche directement les coordonnées non modifiables de celui-ci ou le formulaire de saisie des informations relatives à l'établissement :
Code phtml :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    <h2>Votre établissement d'origine</h2>
    <?php if($this->form->etb_id->getValue() == '') : ?>
        <!-- Établissement de l'étudiant non encore connu => Formulaire de saisie  -->
        <?php echo $this->form->etb_id; 
        echo $this->form->etb_nom;
        echo $this->form->etb_adresse;
        echo $this->form->etb_code_postal;
        echo $this->form->id_commune_etablissement;
        echo $this->form->etb_telephone;
        echo $this->form->te_id;
        ?>
    <?php else :?>
        <!-- Établissement déjà en BDD => Affichage des coordonnées  -->
        <dl>
            <dt>Nom</dt>
            <dd><?php echo $this->escape($this->infos_etudiant['etb_nom']); ?></dd>
            <dt>Adresse</dt>
            <dd>
                <?php echo $this->escape($this->infos_etudiant['etb_adresse']); ?><br />
                <?php echo $this->escape($this->infos_etudiant['etb_code_postal']); ?> 
                <?php echo $this->escape($this->infos_etudiant['nom_commune_etablissement']); ?>
            </dd>
        </dl>
    <?php endif; ?>

Le problème de l'affichage automatique des coordonnées de l'établissement choisi dans la liste déroulante reste à faire.

Un tuto quelque part ?
Un exemple similaire à me montrer ?
Une explication sur la bonne manière de faire ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 15h54   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Je parle tout seul !

J'en suis à essayer d'utiliser un Zend_Dojo_Form_Element_ComboBox qui remplacerait le couple Zend_Form_Element_Select + Zend_Form_Element_Text.
Dans le formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        // Établissement d'origine de l'étudiant
        // Liste de choix
        //$etb_id = new Zend_Dojo_Form_Element_FilteringSelect('etb_id');
        $etb_id = new Zend_Dojo_Form_Element_ComboBox('etb_id');
        $etb_id
            ->setLabel('Nom')
            ->setAutoComplete(true)
            ->setAttrib('onchange','loadetablissement()');
 
        /*$etb_id = new Zend_Form_Element_Select('etb_id');
        $etb_id
            ->setLabel('Choisir dans la liste')
            ->setRequired(false);*/
 
        $etablissement = new Application_Model_DbTable_Etablissement();
        $result = $etablissement->fetchAll();
        $liste_etablissements = array();
        foreach($result as $etb)
        {
            $liste_etablissements[$etb->etb_id] = $etb->etb_nom;
        }
        $etb_id->addMultiOption('0', '');
        $etb_id->addMultiOptions($liste_etablissements);
        $etb_id->setValue('0');
Ça s'affiche mais c'est moche !
Une zone de saisie classique avec au bout un petit rectangle blanc qui est probablement sensé contenir la flèche pour dérouler la liste mais qui ne contient rien.

Quant à ->setAttrib('onchange','loadetablissement()'); j'ai un peu de mal à comprendre ce que je dois faire en javascript derrière !

Rappel du besoin : si l'utilisateur choisit un établissement existant, les coordonnées complète de cet établissement doivent apparaître à la place du morceau de formulaire permettant de les saisir (voir messages précédents).

__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 20h50   #4
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
Salut,

Avec ta fonction javascript, tu pourrais charger les infos de l'établissement en json avec un xmlhttpreqest et remplir les champs dans ta page.

Je n'ai pas vraiment le temps de te filer un exemple mais ce n'est pas si compliqué. Regarde sur la doc de Dojo et Zend_Dojo_Data, tu trouvera ton bonheur
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h59.


 
 
 
 
Partenaires

Hébergement Web