Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-02-2011 16:20:01

Zackfr64
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 3

[zend_view][1.11.2]Remplir un select d'un formulaire html dans une vue

Bonjour,

Mon soucis actuellement est que j'ai un formulaire écrit en html/jquery parce que j'ai besoin d'une vérification coté client, je remplit mon formulaire coté controller avec du jquery mais je ne trouve pas ça propre

Voici mon code pour plus de compréhension:

controller

Code:

        //Instanciation du formulaire utilisateur
        $formUser = new Application_Form_User();

        
        //Instanciation du model typeUtilisateur pour récupérer les types d'utilisateurs qu'on va insérer dans
        //le select de notre formulaire user
        $tableTypeUtilisateur = new Application_Model_DbTable_TypeUtilisateur();
        $dataTypeUtilisateur = $tableTypeUtilisateur->fetchAll();

        //Remplissage de notre select via le resultat de la requete fetchAll
        foreach($dataTypeUtilisateur as $ligneUtilisateur)
        {
            ?>
            <script type="text/javascript">
                $('#type').append("<option value=\"<?php echo $ligneUtilisateur['id_tu'];?>\"><?php echo ligneUtilisateur['tu_nom'];?></option>");
            </script>
            <?php
        }

j'aimerais pouvoir mettre le foreach dans la vue de l'action, en lui envoyant le tab $dataTypeUtilisateur

Donc je fais un

$this->view->dataTypeUtilisateur = $dataTypeUtilisateur

et je fais mon foreach dans la vue en changeant le $dataTypeUtilisateur par un $this->dataTypeUtilisateur

le problème c'est que cela s'éxécute avant que le formulaire soit affiché, je peux voir via firebug que l'exécution de la boucle foreach est faite dans le vide(avec les bonnes informations donc le tableau est ok).

Comment je peux faire pour exécuter ce bout de code après l'affichage de mon formulaire tout en le laissant dans la vue.

Je répète que dans le controller ce morceau de code fonctionne, j'ai bien mon form avec mon select et ses option.

Je sais que c'est liée a une exécution serveur/client mais je ne trouve pas de solution répondant a mon problème.

merci de votre aide

Dernière modification par Zackfr64 (08-02-2011 16:39:44)

Hors ligne

 

#2 08-02-2011 19:40:35

pheuh
Membre
Date d'inscription: 18-03-2010
Messages: 22

Re: [zend_view][1.11.2]Remplir un select d'un formulaire html dans une vue

bonjour,
$formUser->populate(
    array(
        'xxx' => $dataTypeUtilisateur
    )
);
- remplacer 'xxx' par la valeur de l'attribut "name" de ton select dont l'id est #type (c'est peut-être 'type' aussi d'ailleurs ?)
- $dataTypeUtilisateur doit être un tableau associatif : les clés se retrouveront dans l'attribut "value" des options du select, et les valeurs se retrouveront comme libellés.

Hors ligne

 

#3 09-02-2011 09:23:03

Zackfr64
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 3

Re: [zend_view][1.11.2]Remplir un select d'un formulaire html dans une vue

ça devrait marcher mais le probleme c'est que j'utilise pas zend_form, j'ai fait mon formulaire en html et jquery pour avoir une validation coté client, et populate est propre a zend_form (enfin d'apres mes recherches)

Je pensais a une autre méthode du coup, passer en parametre a mon constructeur de formulaire le tableau ($dataTypeUtilisateur) et remplir mon select, ce qui fait qu'a son instanciation il est préremplit.

J'ai pas besoin de le faire dans le controller, et plus dans la vue du coup.

Hors ligne

 

#4 09-02-2011 10:20:12

Zackfr64
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 3

Re: [zend_view][1.11.2]Remplir un select d'un formulaire html dans une vue

donc j'ai surcharger mon _construct de mon formulaire

Code:

public function  __construct($dataTypeUtilisateur,$action,$dataUser)

du coup je remplir mon formulaire a sa création
pour l'action par exemple

Code:

<form name="formUser" id="formUser" class="formular" method="post" action="<?php echo $action;?>">

c'est pratique car j'utilisais le formulaire utilisateur pour deux actions: ajouter et modifier

pour ajouter: mon formulaire était vide, mais le select remplit et l'action renvoyé vers ajouter

pour modifier: mon formulaire était remplit des infos de l'utilisateur, le select remplit et l'action renvoyé vers modifier/id/valeur

donc en gros voila comment je déclare mes form suivant l'un ou l'autre cas

ajouter

Code:

$formAjoutUt = new Application_Form_User($dataTypeUtilisateur, $action, 0);

modifier

Code:

$formAjoutUt = new Application_Form_User($dataTypeUtilisateur, $action, $dataUser);

meme pas besoin de vérifier que $dataUser est a 0 pour laisser les champs vide, je fais des value="<?php echo $dataUser['ut_nom'];?>" et cela ne m'affiche rien du coup (par contre je pensais que ça générerait des erreurs dans apache mais rien du tout).

La ou avant j'avais des dizaines de lignes dans mes action "ajouter" et "modifier" pour mettre a jour les champs, l'action etc... ben maintenant j'ai juste des paramètres a la création de mon formulaire.

voici le code complet de mon formulaire pour ceux que ça interesse

Code:

public function  __construct($dataTypeUtilisateur,$action,$dataUser)
    {
        ?>
        <form name="formUser" id="formUser" class="formular" method="post" action="<?php echo $action;?>">
                <fieldset>
                    <legend>Utilisateur</legend>
                    <label>
                        <span>Login : </span>
                        <input class="validate[required,custom[noSpecialCaracters],length[0,50]]" type="text" name="login" id="login" value="<?php echo $dataUser['ut_login'];?>"/>
                    </label>
                    <label>
                        <span>Mot de passe : </span>
                        <input class="validate[required,length[0,50]]" type="password" name="mdp" id="mdp" <?php if($dataUser){echo "disabled";} ?> value="<?php echo $dataUser['ut_mdp'];?>"/>
                    </label>
                    <label>
                        <span>Confirmation Mot de passe : </span>
                        <input class="validate[required,confirm['#mdp'],length[0,50]]" type="password" name="conf_mdp" id="conf_mdp" <?php if($dataUser){echo "disabled";} ?> value="<?php echo $dataUser['ut_mdp'];?>"/>
                    </label>
                    <label>
                        <span>Nom : </span>
                        <input class="validate[custom[onlyLetter],length[0,50]]" type="text" name="nom" id="nom" value="<?php echo $dataUser['ut_nom'];?>"/>
                    </label>
                    <label>
                        <span>Prenom : </span>
                        <input class="validate[custom[onlyLetter],length[0,50]]" type="text" name="prenom" id="prenom" value="<?php echo $dataUser['ut_prenom'];?>"/>
                    </label>
                    <label>
                        <span>Email : </span>
                        <input class="validate[custom[email],length[0,50]]" type="text" name="email" id="email" value="<?php echo $dataUser['ut_email'];?>"/>
                    </label>
                    <label >
                        <span>Type utilisateur : </span><br/>
                            <select name="type" id="type">
                            <?php
                            foreach($dataTypeUtilisateur as $ligneUtilisateur)
                            {
                                echo "<option value='".$ligneUtilisateur['id_tu']."'>".$ligneUtilisateur['tu_nom']."</option>";
                            }?>
                            </select><br/><br/>
                    </label>
                    <label>
                        <span>Actif : </span><br/>
                        <input type="checkbox" name="actif" id="actif" <?php if($dataUser['ut_actif']=="yes"){echo "checked";} ?>/>
                    </label>
                </fieldset>
            <p><input class="submit" type="submit" value="Enregistrer" /></p>
        </form>
        <?php
    }

Dernière modification par Zackfr64 (09-02-2011 10:21:35)

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