Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-04-2012 03:58:52

belle-vie
Membre
Date d'inscription: 04-04-2012
Messages: 32

Coment récupérer la valeur choisie dans une liste déroulante .

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

Code:

<?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));
}}
?>

Code:

  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

 

#2 21-04-2012 10:32:17

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Coment récupérer la valeur choisie dans une liste déroulante .

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 :

Code:

[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

 

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