Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut , j'ai un champ de liste déroulante qui récupère des données de la base .Quand , je sélection une valeur pr une insertion rien ne passe et j'obtiens une valeur null
<?php class Form_Ajout extends Zend_Form { public function init() { $this->setName('book'); $id = new Zend_Form_Element_Hidden('id'); $id->addFilter('Int'); $name = new Zend_Form_Element_Text('name'); $name->setLabel('name') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $auteur = new Zend_Form_Element_Text('auteur'); $auteur->setLabel('auteur') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $select = $db->select()->from('user',array('login')); $listOptions = $db->fetchAll($select); //Zend_Debug::dump($listOptions); $utilisateur = new Zend_Form_Element_Select('user'); $utilisateur->setLabel('user'); $utilisateur->setMultiOptions($listOptions); $submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $this->addElements(array($id,$name,$auteur,$utilisateur,$submit)); }} ?>
public function addAction(){ $this->view->title = "Ajouter un nouvel album"; $form = new Form_Ajout(); $form->submit->setLabel('Ajouter'); $this->view->form = $form; if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $projet = new Model_DbTable_Projet(); $row = $projet->createRow(); $row->name = $form->getValue('name'); $row->auteur = $form->getValue('auteur'); $row->utilisateur = $form->getValue('utilisateur'); $row->save();
Hors ligne
C'est tout à fait normal, tu lui passe la liste retournée depuis ta requête. Tu as donc demander de récupérer le champ login sur ta table utilisateur. Tu vas donc récupérer un array contenant que des logins. Or ta liste va se servir de ces login pour les afficher mais ton composant select n'a pas de valeur sur ton attribue "value". Pour t'aider à voir tout ça je te conseil le plugin firefox firebug qui te permet de vérifier si les données de ton code html sont correctes.
Pour ça tu dois récupérer l'id et login de ta table user et formater un tableau qui contiendra en clé l'id de ta table et en valeur le login.
Donc tu devrais avoir un truc de ce genre :
[lang=php] $select = $db->select()->from('user',array('id, 'login')); $result = $db->fetchAll($select); $listOptions = array(); foreach($result as $line) { $listOptions[$line['id']] = $line['login']; }
A adapter suivant comment tu peux récupérer les valeurs depuis ton objet $result (attribut via getter ou comme un tableau)
Hors ligne
Pages: 1