Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-07-2009 16:51:13

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

Bouton radio dans une boucle

Bonjour, cela fait 2 jours que je cherche une solution à ce problème sans succès. Au fait je voudrais afficher divers liste de produits de ma base de données dans un tableau (chaque produit sur une ligne du tableau) et juste à côté (dans une balise <td> </td>) je voudrais afficher un bouton radio (contenant 2 options oui ou non).
J'arrive à afficher la liste de produits mais pas les boutons radios correctement. Les boutons radios se mettent en début de page ainsi que le bouton submit mais pas dans le tableau (ou à la fin où j'ai mis je submit) à l'endroit où j'ai mis un addElement($bouton).Comment y procéder? Merci à vous!
Voilà mon code

Code:

<?php

class Form_Display extends Zend_Form
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        
        $this->setName('display');
        
        $products = new Model_DbTable_Products();
        $rows = $products->fetchAll();
    
        foreach ($rows as $product)  {
        
            $id=$product->prod_id;
            

            echo "<table width='865'>";
            echo    "<tr>";
            echo        "<td width='42' class='text'>";
            echo         $product->prod_id;
            echo        "</td>";
            
            echo        "<td width='130' class='text'>";
            echo         $product->prod_name;
            echo        "</td>";
            
            echo        "<td'>";
            
            $bouton = new Zend_Form_Element_Radio($id);
            $bouton->setLabel('Choose:')
                    ->setAttrib ('id', $id)
                    ->setSeparator(' ')
                    ->setName($id)
                    ->addMultiOption('0', 'oui')
                    ->addMultiOption('1', 'non');
                          
            $this->addElement($bouton);

            echo        "</td>";

            
            echo    "</tr>";
            echo "</table>";
            echo "<br/>";

        }
        
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('id', 'submitbutton');
        $this->addElement($submit);
    
    }
}

Hors ligne

 

#2 29-07-2009 17:06:03

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Bouton radio dans une boucle

La methode que tu utilises n'est pas du tout la bonne !

Jamais de echo dans un model, et encore moins dans un formulaire...

Si tu veux absolument utiliser des tr td ( ce qui est deconseillé ) tu dois aller faire un tour du coté des décorators.

Hors ligne

 

#3 29-07-2009 17:09:03

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

Re: Bouton radio dans une boucle

Guillhomme a écrit:

La methode que tu utilises n'est pas du tout la bonne !

Jamais de echo dans un model, et encore moins dans un formulaire...

Si tu veux absolument utiliser des tr td ( ce qui est deconseillé ) tu dois aller faire un tour du coté des décorators.

merci pour ta réponse
peux tu me dire quelle solution tu peux me conseiller? Merci

Hors ligne

 

#4 29-07-2009 17:28:32

itecman
Membre
Lieu: Orléans
Date d'inscription: 03-07-2009
Messages: 57

Re: Bouton radio dans une boucle

Bonjour,

Tout d'abord je ne pense pas vraiment que dans la construction de ton formulaire faire des "echo" soit vraiment très *propre*. Ce que tu fais avec tes "echo" c'est typiquement de la décoration des éléments du formulaire, dont il faudrait plus voir du coté des decorators pour cette mise en page.
Les décorators sont "pénibles" à bien mettre en place je trouve, mais ça reste LE moyen propre pour ce que tu veux faire.

Ensuite, pour cette partie du code :

Code:

echo        "<td'>";
            
            $bouton = new Zend_Form_Element_Radio($id);
            $bouton->setLabel('Choose:')
                    ->setAttrib ('id', $id)
                    ->setSeparator(' ')
                    ->setName($id)
                    ->addMultiOption('0', 'oui')
                    ->addMultiOption('1', 'non');
                          
            $this->addElement($bouton);

            echo        "</td>";

Déjà t'as un ' en trop à la première ligne (mais ce n'est pas vraiment le problème). Le fait de faire ton $this->addElement($bouton); à cet endroit la ne va garantir en rien (il me semble) que soit dans ta balise <td></td>.

Je ne sais même pas comment le moteur interprète tout ça. Normalement dans ton Controleur ou tu va instancier un formulaire de type Form_Display pour le manipuler il va faire les "echo" d'un coté et construire ton formulaire de l'autre je crois.

Du coup je dirais qu'il y a un mélange entre mise en forme et définition d'un objet. Pour avoir une idée de ce qu'il faut regarde le code source du rendu (la ou il te met les boutons radios en haut).

Normalement il doit t'afficher un premier tableau (qui correspond a l'appel au constructeur du formulaire dans ton Controller et les "echo" que t'y a mis) et de l'autre tes boutons radios et ton submit.

Je parle beaucoup mais j'essaie d'être clair :p, la je te conseil fortement de voir du coté des décorators et d'enlever ces echos dans la classe formulaire.

Bye

ça sera déjà un début pour les décorators : http://framework.zend.com/manual/fr/zen … decorators


-- itecman

Dernière modification par itecman (29-07-2009 17:35:02)


-- itecman smile

ZF 1.8.4 - Zend Server CE

Hors ligne

 

#5 29-07-2009 17:39:16

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

Re: Bouton radio dans une boucle

itecman a écrit:

Bonjour,

Tout d'abord je ne pense pas vraiment que dans la construction de ton formulaire faire des "echo" soit vraiment très *propre*. Ce que tu fais avec tes "echo" c'est typiquement de la décoration des éléments du formulaire, dont il faudrait plus voir du coté des decorators pour cette mise en page.
Les décorators sont "pénibles" à bien mettre en place je trouve, mais ça reste LE moyen propre pour ce que tu veux faire.

Ensuite, pour cette partie du code :

Code:

echo        "<td'>";
            
            $bouton = new Zend_Form_Element_Radio($id);
            $bouton->setLabel('Choose:')
                    ->setAttrib ('id', $id)
                    ->setSeparator(' ')
                    ->setName($id)
                    ->addMultiOption('0', 'oui')
                    ->addMultiOption('1', 'non');
                          
            $this->addElement($bouton);

            echo        "</td>";

Déjà t'as un ' en trop à la première ligne (mais ce n'est pas vraiment le problème). Le fait de faire ton $this->addElement($bouton); à cet endroit la ne va garantir en rien (il me semble) que soit dans ta balise <td></td>.

Je ne sais même pas comment le moteur interprète tout ça. Normalement dans ton Controleur ou tu va instancier un formulaire de type Form_Display pour le manipuler il va faire les "echo" d'un coté et construire ton formulaire de l'autre je crois.

Du coup je dirais qu'il y a un mélange entre mise en forme et définition d'un objet. Pour avoir une idée de ce qu'il faut regarde le code source du rendu (la ou il te met les boutons radios en haut).

Normalement il doit t'afficher un premier tableau (qui correspond a l'appel au constructeur du formulaire dans ton Controller et les "echo" que t'y a mis) et de l'autre tes boutons radios et ton submit.

Je parle beaucoup mais j'essaie d'être clair :p, la je te conseil fortement de voir du coté des décorators et d'enlever ces echos dans la classe formulaire.

Bye

ça sera déjà un début pour les décorators : http://framework.zend.com/manual/fr/zen … decorators


-- itecman

merci de ta réponse! c'est bien clair
en tout cas il faut que je plonge dans les décorator meme si j'ai déjà jeter un coup d'oiel et c'est extrèmement difficile! :'(
merci!!

Hors ligne

 

#6 30-07-2009 09:18:55

itecman
Membre
Lieu: Orléans
Date d'inscription: 03-07-2009
Messages: 57

Re: Bouton radio dans une boucle

J'avoue j'ai eu (et je risque d'en avoir encore) du mal pour utiliser ces decorators. Heureusement qu'il existe des tutos et des forums avec des gens ayant eu le même problème smile.

Bon courage.

--itecman


-- itecman smile

ZF 1.8.4 - Zend Server CE

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