Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-05-2009 10:24:01

pierrooot
Membre
Date d'inscription: 15-04-2009
Messages: 31

[Zend_Form] récupération d'id et affichage avec checkbox

Bonjour, voici mon problème je suis actuellement entrain de développer une application pour améliorer la gestion de retour de pièces hors service .
dans ma première étape je sélectionne un fournisseur et après l'avoir validé je voudrais afficher la liste des produits hs pour ce fournisseur à l'aide d'une checkbox pour ensuite les sélectionner ou pas .

Premier problème je n'arrive pas a récupérer l'identifiant fournisseur que j'ai passer par l'url pour le passer dans ma requête au niveau de mon formulaire.
Second problème au niveau de l'affichage des produits dans la checkbox.

Voici mon controller :

Code:

 function saisieretourfournisseurAction()
    {
    $form= new saisieretourfournisseurForm();
    $this->view->form=$form;
    } // cela me permet d'afficher mon formulaire.

voici mon formulaire :

Code:

<?php
class saisieretourfournisseurForm extends Zend_Form
{
    public function __construct($options =null)
    {
        parent::__construct($options);
        $id_four = new Zend_Form_Element_Hidden('id_four');
        

            
            $fournisseur = new fournisseur(); // requête permettant de récupérer mes produits en
            $select = $fournisseur->select() // fonction du fournisseur
            ->setIntegrityCheck(false)
            ->from('fournisseur')
            ->join('livraison')
            ->join('produit')
            ->join('retour')
            ->where('fournisseur.id_four=?', $id_four)
            ->where('fournisseur.id_four=livraison.id_four')
            ->where('livraison.id_livraison=produit.id_livraison')
            ->where('produit.id_prod=retour.id_prod');             
            $four=$fournisseur->fetchAll($select);
            foreach($four as $test)
            {    
            $designation = new Zend_Form_Element_Checkbox('designation');
            echo $test->designation;
            $designation->setLabel('d&eacute;signation :');}

        
        
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('id_four', 'submitbutton');
        
        $this->addElements(array($id_four, $designation, $submit));
        }
}
?>

Cordialement merci d'avance

Hors ligne

 

#2 14-05-2009 12:37:04

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Zend_Form] récupération d'id et affichage avec checkbox

Salut, déjà dans ton controller faut que tu vérifie que ton formulaire a bien été posté avec $this->_request->isPost().
Ensuite tu vérifie que les données du formulaire sont bonnes avec :

Code:

$form = new saisieretourfournisseurForm();
$dataForm = $this->_request->getPost();
$form->isValid($dataForm);

Pour ton ID, pourquoi ne pas le faire passer par un champ hidden du formulaire ?
Je remarque que tu ne fait pas passer l'id fournisseur par l'url mais par un champ hidden. Ce qui fait que ton code ne doit pas fonctionner si tu pense le faire passer par l'URL.

Après tu pourrais récupérer toutes les informations avec :

Code:

$form->getValue('id_four'); //ID fournisseur
$form->getValue('champ_1'); //Input du nom "champ_1"

Et, pourquoi ne pas récupérer les informations de la BDD dans le controller ?

Cela te permettrai d'avoir le même formulaire pour l'ajout et l'édition.

Un fois les données récupérées en BDD, tu les envoi au formulaire avec :

Code:

$reponseSql = new Retour();
$reponseSql->select()
                     ->where('id = ?', $form->getValue('id'));
$form->populate($reponseSql);

P.S. : Il faut toutefois que le champ du formulaire corresponde au nom du champ SQL ou sinon les renommer lors de l'extraction.

P.S. : Je ne maitrise pas parfaitement le framework, j'ai pu faire des erreurs, veuillez me corriger si tel est le cas !

Dernière modification par Seazer (14-05-2009 12:45:52)

Hors ligne

 

#3 14-05-2009 16:10:35

pierrooot
Membre
Date d'inscription: 15-04-2009
Messages: 31

Re: [Zend_Form] récupération d'id et affichage avec checkbox

oui j' connais cette façon de procéder mais le problème c'est que je veux que le nombre de checkbox qui s'affiche dépende du nombre de produit.

Cordialement

Hors ligne

 

#4 14-05-2009 17:31:58

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Zend_Form] récupération d'id et affichage avec checkbox

Pourquoi pas une multi-select à qui tu enverrai un array de tes produits ?

Je fonctionne comme cela pour choisir plusieurs catégories à mes articles !

Hors ligne

 

#5 15-05-2009 09:12:53

pierrooot
Membre
Date d'inscription: 15-04-2009
Messages: 31

Re: [Zend_Form] récupération d'id et affichage avec checkbox

mais je ne vois pas comment faire avec un multi select.

Hors ligne

 

#6 15-05-2009 09:48:06

mksoft
Nouveau membre
Date d'inscription: 24-03-2009
Messages: 9

Re: [Zend_Form] récupération d'id et affichage avec checkbox

bonjour à tous ,


Pour le checkbox multiple, je fournis des valeurs stockées dans une BDD :

dans le formulaire :

        $diamaxe = new Zend_Form_Element_MultiCheckbox('diamaxe');
        $diamaxe->setLabel('Axe (mm)');
        $diamaxe->setseparator(' ');
        $diam=new Diamaxes();
    $diamaxe->setMultiOptions($diam->get_array_diams());


et la fonction qui crée un tableau associatif :

       public function get_array_diams()
      {   
        foreach($this->fetchAll() as $diam) :
           $tab[($diam->diamaxe)] = ($diam->diamaxe);
        endforeach;
       return $tab;   
      }


par défaut, les checkbox sont en colonne. En précisant un séparateur ' ' , ils passent en ligne.


a+
michel

Hors ligne

 

#7 16-05-2009 10:58:43

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Zend_Form] récupération d'id et affichage avec checkbox

Voilà pour le multiselect :

Input :

Code:

$category = new Zend_Form_Element_Multiselect('category');
        $category->setLabel('Catégorie(s)')
                 ->setRequired(true)
                 ->addValidator('NotEmpty')
                 ->addMultiOptions($options);

Voilà la partie controller :

Code:

//Catégories formulaire
        $category = new Dao_Category();
        $result = $category->fetchAll();
        foreach ($result as $cat){
            $multiSelect[$cat['id']] = $cat['name'];
        }

Array : la clef équivaut au name de l'option et sa valeur l'affichage dans la liste.
Après il te suffit juste d'envoyer ton array à ton formulaire via $options à sa création :

Code:

$form = new Form_Addnews($multiSelect);

Sinon voilà la doc : Zend_Form_Element_Multiselect

P. S. : Pour mes catégories la forme dans ma BDD est de "1,2,x,z"

P. S. 2 : Désolé si le code est pas très propre, c'est surtout de l'expérimentation.

Dernière modification par Seazer (16-05-2009 11:30:54)

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