IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Ajouter 2 populate() à un formulaire


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut Ajouter 2 populate() à un formulaire
    Bonjour,

    Je me retrouve avec un problème sur plusieurs niveaux. Je tourne depuis hier après midi, et après beaucoup de modifications de code, je pense avoir cerné le problème. Il y avait une erreur ailleurs, et de fil en aiguille j’ai réussi à l’isolé.
    Je vais essayer d'être claire.

    J'ai une table Item, User et Attrib.


    User contient tous les utilisateurs de la base.

    Item répertorie des toutes sortes d'item avec beaucoup de champs.

    Attrib fait le lien entre les 2. Un utilisateur peut avoir un ou plusieurs item, par ailleurs il y a une date de début et de fin d'attribution.


    Toutes les fonctions classiques sont implémentées et fonctionnent (ajouter, supprimer, modifier)


    Pour l'attribution d'un objet, il suffit de cliquer sur 'modifier' un item et de mettre un nom dans le champ 'user'.

    Les attributions sont bien réalisées, si on écrit un autre nom l'attribution change.
    Quand on click sur un item on voit à qui il est attribué et ainsi que l'historique des attributions.


    Dsl d'être long mais il me semblait important d'expliquer.

    Le problème viens de faite que je n'arrive pas à faire apparaitre le nom de l'utilisateur dans le champ 'user' du formulaire item.

    Il apparait par contre dans le tableau listant les champs et valeurs de item.

    Après un fetchRow() avec les différentes jointures (User et Attrib étant exclu de la jointure car il me donnent des erreurs, en faite ils renvoient plusieurs résultats), je fait un affichage d'un item, en appelant une méthode (dans la vue) findOnUserByItemID() pour trouver le nom de l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <table class="table">
        <tr>
            <th>USER</th>
            <td>
                <?php
                $table = new Model_DbTable_Item();
                $user = $table->findOnUserByItemID($this->escape($this->item['item_id']));
                if ($user->count() == 1) {
                        $user = $user->current();
                        echo '<a href="';
                        echo $this->url(array('controller'=>'user','action'=>'get','id'=>$this->escape($user->user_id)));
                        echo '">';
                        echo $this->escape($user->user_firstName) . ' ' . $this->escape($user->user_lastName);
                        echo '</a>';
                        echo ' since ' . $this->escape($user->attribut_dateBegin);
                } else {
                        echo 'NO CURRENT USER';
                    }
                ?>
            </td>
        </tr>
        <tr>
            <th>NAME</th>
            <td><?php echo $this->escape($this->item['item_name']);?></td>
        </tr>
        <tr>
            <th>PRICE</th>
            <td><?php echo $this->escape($this->item['item_price']);?></td>
        </tr>
    etc ....

    Maintenant je veux faire pareille pour le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    //action update
                $id = $this->_getParam('id', 0);
                if ($id > 0) {
                    $table = new Model_DbTable_Item();
                    $form->populate($table->getItem($id));
     
    ------------------------------------------------------------------
                //je souhaite rajouter ca mais ça ne marche pas :
                    $user = $table->findOnUserByItemID($id);
                    if ($user->count() == 1) {
                        $user = $user->current();
                        $form->populate($user);
                    }            
                }
    -------------------------------------------------------------------
    J’utilise donc 2 fois populate().
    Pour info findOnUserByItemID() retourne un fetchAll() avec une jointure entre Item, User et Attrib, avec une condition Where. Elle retourne toujours 1 ou 0 résultat.

    Le code entre pointillés est le code que je veux rajouter, mais avec ce code j'ai une erreur
    Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, object given, called in C:\wamp\www\application\controllers\ItemController.php on line 87 and defined in C:\wamp\www\library\Zend\Form.php on line 1922
    Erreur de synthaxe ? Structurelle ?

    Pouvez-vous m’aider.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    j'ai trouvé .... c'est arrivé après une bonne pause déjeuné ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form->populate(array('user_username'=>$user->user_username));
    il faut lui donner un tableau

    il me semblais que fetchAll()->current() étais une sorte de tableau, mais non.

    dsl pour ce long poste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme Ajout enregistrement dans un formulaire
    Par lawokgluot dans le forum IHM
    Réponses: 11
    Dernier message: 27/04/2007, 07h44
  2. Ajout enregistrement dans un formulaire
    Par lawokgluot dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2006, 11h07
  3. Ajout champs dans un formulaire
    Par erikac dans le forum Access
    Réponses: 3
    Dernier message: 09/05/2006, 17h26
  4. ajouter deux champs..de formulaire
    Par Chronax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2006, 12h15
  5. Réponses: 10
    Dernier message: 02/02/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo