Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-07-2009 17:15:09

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

Bonjour, je voudrais afficher dans une liste/menu déroulante tous les enregistrements (de la colonne cat_name) de la table category de ma base de donnée pour que l'user sélectionne une catégorie.
Voila la table : category(cat_id, cat_name);
Comment on fait le lien avec la BDD et comment on affecte les valeurs retournées à une liste déroulante?
Merci de vouloir m'aider

Code:

class Form_Product extends Zend_Form
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        
        $this->setName('product');
        
        $prod_id = new Zend_Form_Element_Hidden('prod_id');
        
        $prod_name = new Zend_Form_Element_Text('prod_name');
        $prod_name->setLabel('Product name')
                  ->setRequired(true)
                  ->addFilter('StripTags')
                  ->addFilter('StringTrim')
                  ->addValidator('NotEmpty');
                  
        //ici je voudrais afficher le menu déroulant avec les éléments issus d'une requête
                    
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('prod_id', 'submitbutton');
        
        $this->addElements(array($prod_name, $cat_name, $submit));
    }
}

Hors ligne

 

#2 20-07-2009 19:32:00

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

Code:

// recuperation de la liste des arretes d'exercices
$this->model->addComponent('Model_Arrete');
$arreteList = $this->model->getArreteNames();
asort($arreteList); // tri alphabetique croissant
$arreteElement = $form->createElement('FilteringSelect', 'arr_id', array('label' => 'Arrete'));
$arreteElement->addMultiOptions($arreteList);

Dans Model_Arrete

Code:

/**
 * Retourne la liste des noms des arretes
 * @return array(arr_id => arr_name)
 */
public function getNames()
{
    $arreteNames = $this->fetchAll($this->select()
                                                      ->from('arrete', array('arr_id', 'arr_name'))
                                                      ->where("arr_close=0"));
    $arreteNames = $arreteNames->toArray();

    $res = array();
    // transformation de l'array $arreteNames
    foreach($arreteNames as $key => $arrete) {
            $res[$arrete['arr_id']] = $test['arr_name'];
    }

    return $res;
}

Hors ligne

 

#3 20-07-2009 22:33:20

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

merci d'avoir répondu!
je vais essayer de comprendre et appliquer la méthode.

Hors ligne

 

#4 21-07-2009 01:28:03

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

Dans models/DbTable/Category.php

Code:

<?php

class Model_DbTable_Category extends Zend_Db_Table
{
    protected $_name = 'category';
    protected $_primary = 'cat_id';
}

Ensuite dans ta classe Form_Product tu rajoutes ceci

Code:

        $categoryModel         = new Model_DbTable_Category();
        $categories = $categoryModel->fetchAll();
        $categoriesTab          = array();
       
        foreach ($categories as $categorie) {
            $categoriesTab[$categorie->cat_id] = $categorie->cat_name;
        }
         
        $categorySelect = new Zend_Form_Element_Select('cat_id');
        $categorySelect->setMultiOptions($categoriesTab);
        $categorySelect->setLabel("Catégories :");
        $categorySelect->setRequired(true);
        $categorySelect->addValidator(new Zend_Validate_Int());
        $this->addElement($categorySelect);

ça devrait être bon

Hors ligne

 

#5 21-07-2009 23:51:22

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

Merci beaucoup dev-k! C'était justement ce qu'il me fallait!!! Ça marche nickel!

Hors ligne

 

#6 22-07-2009 00:30:55

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

dev-k a écrit:

Dans models/DbTable/Category.php

Code:

<?php

class Model_DbTable_Category extends Zend_Db_Table
{
    protected $_name = 'category';
    protected $_primary = 'cat_id';
}

Ensuite dans ta classe Form_Product tu rajoutes ceci

Code:

        $categoryModel         = new Model_DbTable_Category();
        $categories = $categoryModel->fetchAll();
        $categoriesTab          = array();
       
        foreach ($categories as $categorie) {
            $categoriesTab[$categorie->cat_id] = $categorie->cat_name;
        }
         
        $categorySelect = new Zend_Form_Element_Select('cat_id');
        $categorySelect->setMultiOptions($categoriesTab);
        $categorySelect->setLabel("Catégories :");
        $categorySelect->setRequired(true);
        $categorySelect->addValidator(new Zend_Validate_Int());
        $this->addElement($categorySelect);

ça devrait être bon

merci pour la réponse! une toute dernière question,
comment on fait pour récupérer le cat_id correspondant au cat_name sélectionné par l'user? (le cat_id mais pas le cat_name). C'est dans quelle variable?
encore merci!

Hors ligne

 

#7 22-07-2009 00:51:00

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

Quand tu soumets ton formulaire, tu vérifies si les données et qu'elles sont valides de cette façon

Code:

if ($this->getRequest()->isPost() && $form->isValid($_POST)) {
......

à l'intérieur de cette condition du peux récupérer les données de ton formulaires

Code:

 $values = $form->getValues(); 

//l'id de la catégorie selectionnée 
$cat_id = $values['cat_id'];

Dans ton cas

Code:

 $form = new Form_Product();

j'espère que j'ai bien répondu

Hors ligne

 

#8 22-07-2009 00:51:41

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

je crois que j'ai trouvé la solution moi meme! j'ai utilisé search_array

Hors ligne

 

#9 22-07-2009 00:53:14

mymind
Membre
Date d'inscription: 15-07-2009
Messages: 24

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

merci pour la réponse! c bon

Hors ligne

 

#10 22-07-2009 01:00:41

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: ZF 1.8 ZEND_FORM - afficher contenu d'une table dans liste/menu

ah oui d'accord je viens de saisir ta question, il est tard c'est pour ça wink

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