Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tout le monde, je rencontre un soucis avec le framework et les formulaires.
J'essaie de faire un form avec un select dont les options sont en db mais les <options> affichées de mon <select> ne sont pas celles attendues.
Voilà le code généré :
<select name="locationId" id="locationId" required="1"> <optgroup label="options"> <option value="1" label="Home" selected="selected">Home</option> </optgroup> <option value="listsep" label="<br />"><br /></option> <option value="id" label="locationId">locationId</option> </select>
Or, le code attendu devrait être
<select name="locationId" id="locationId" required="1"> <option value="1" label="Home" selected="selected">Congrescentrum Ter Elst</option> </select>
Voilà comment je fais tout ça (j'ai retiré le code non concerné)
// form class Default_Form_Congress extends Zend_Dojo_Form { $this->addElement('select', 'locationId', array( 'label' => 'Location', 'required' => true, )); $location = new Default_Model_Location(); $data = array(); $entries = $location->fetchAll(); foreach($entries as $entry) { $data[$entry->id] = $entry->title; } $this->locationId->setMultiOptions($data); }
J'ai remarqué que le view helper reçoit comme paramètre options, l'array suivant
Array ( [options] => Array ( [1] => Home ) [listsep] => <br /> [id] => locationId )
et au vu du code de ce helper, il devrait recevoir
Array ( [1] => Home )
C'est un bug du framework ou je fais pas ça correctement? Je peux corriger moi-même dans la library mais ça ne m'enchante pas trop. Surtout si c'est moi qui fait quelque chose de travers
Dernière modification par Salt (18-05-2009 11:42:35)
Hors ligne
As tu essayer
addMultiOptions(array $options) ?
Car le set va ecraser les options existante alors que le add va just les ajouter
Hors ligne
Oui, le problème reste le même. J'avais mis un addMultiOptions au début mais comme j'ai un prob, j'ai essayé avec le setMultiOptions (qui convient mieux à ce cas-ci d'ailleurs).
Hors ligne
Ok
Personnellement moi j'utilise zend_dojo et la pas de soucis tu as bien
<select> <option> </option>.... </select>
Pour une idée :
$combobox = new Zend_Dojo_Form_Element_Combobox('select', array( 'label' => 'ComboBox (select)', 'value' => 'blue', 'autocomplete' => false, 'multiOptions' => $multiOptions, //mon array ));
Par contre faut activer dojo dans le boostrap et le <head> dans la doc c'est bien expliquer
Hors ligne
Je vais faire ça en attendant mais si quelqu'un a une idée, je reste preneur.
Hors ligne
Salut,
j'ai moi aussi été confronté à ce genre de soucis, alors j'ai fait la chose suivante :
Dans mon modèle je définie une fonction static qui a pour but de me construire mon tableau :
public static function arrayListe() { $cat=new Categorie(); $cat=$cat->fetchAll(); $tab=array(); $tab[0]="Selectionner une catégorie"; foreach($cat as $c) { $tab[$c->id]=$c->nom; } return $tab; }
je fais donc ensuite :
monchamp->addMultiOptions(MonModele::arrayListe());
et voilà!
Hors ligne
La construction de l'array à passer en paramètre à setMultiOptions est bien correcte. En tous cas, ça dump le bon contenu quand je dump l'array.
C'est entre l'ajout des options et le rendu de celui-ci qu'il a un truc qui ne va pas, mais quoi?
Hors ligne
Peut tu faire un screen de ta select box déroulée stp?
Hors ligne