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_Db PHP Discussion :

Impossible de "peupler" un formaire avec un Rowset


Sujet :

Zend_Db PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Points : 171
    Points
    171
    Par défaut Impossible de "peupler" un formaire avec un Rowset
    Bonjour,

    Mon post a pour vocation de comprendre la différence entre ces deux valeurs de "$news" .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $news1 = $blog->find($this->_request->getParam('id_news'))->toArray();
     
    $news2 = $blog->fetchRow($blog->select()->where('b_id',$this->_request->getParam('id_news')))->toArray();
     
    $form->populate($news);
    Avec $news1, impossible de peupler un formulaire, aucune erreur, mais le formulaire n'est pas peupler.
    Avec $news2 cela fonctionne, alors que un dump nous confirme que les deux variables contiennent exactement la même chose.
    Il y a forcément une différence non ? WTF !

    EDIT : pire que je croyais, il m'est en fait impossible d'accéder aux variables générées par la méthode find, ni même pour faire un echo dans la vue !!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    La réponse est dans ton titre : il est en effet impossible de peupler un formulaire avec un rowset, c'est avec un row (ou équivalent) qu'il faut le peupler.
    Or, find() ne renvoie pas un row mais un rowset. Il faut donc utiliser la méthode current() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $news1 = $blog->find($this->_request->getParam('id_news'))->current()->toArray();

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Points : 171
    Points
    171
    Par défaut
    Je ne comprends pas vraiment, la méthode populate requiert un array, ce que je fournis, alors pourquoi le array doit venir d'un row ?

    (Ou alors j'ai mal vu et je fournit un array qui contient un array ?? | je pense que c'est ça right ?)

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Ton rowset est en effet un array de rows.
    Pour peupler tes champs, tu dois passer à Zend_Form un array ayant comme clefs les noms de champs. Si tes champs ont les mêmes noms que dans la base, tu passes typiquement un row. Mais tu peux passer n'importe quel array.

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