Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je souhaite afficher plusieurs select et leurs valeur valeurs doivent être contenu dans un tableau.
<select name="test[]"></select> <select name="test[]"></select>
En procédant de cette façon je vais obtenir un tableau test avec 2 entrées qui ont pour valeurs celle des 2 select.
Je souhaite faire ca avec l'élément select de zend_form.
Lorsque je déclare l'élément de la façon ci-dessous, les crochet sont effacé du name de chaque select.
$select = new Zend_Form_Element_Select("test[]"); echo $select;
Ca affiche ceci :
<select name="test"></select>
J'ai regarder dans la doc API du zend framework et j'ai trouvé par miracle l'attribut ($_isArray) qui permet de dire si le select représente un tableau.
$select = new Zend_Form_Element_Select("test"); $select->setIsArray(true); echo $select;
Cette fois ci, ca fonctionne mais problème c'est que l'attribut multiple est attérit dans ma balise select...
<select multiple="multiple" id="native" name="test[]"></select>
Comment je peux retirer cette attribut?
Hors ligne
Une solution, surement pas la meilleure, c'est de faire un helper de vue dérivé de Zend_View_Helper_FormSelect et dont la fonction "formSelect" ne contient pas le code d'affichage de l'attribut "multiple". Solution inutilisable telle quelle si on veut des select avec sélection multiple et d'autres sans.
Autre solution, surement plus propre, faire une classe dérivé de Zend_Form_Element_Select dont la fonction "filterName" appelle la fonction filterName parente avec le second paramètre égal à "true". Le problème c'est que vu le code de "Zend_View_Helper_FormSelect" l'attribut "multiple" dépend uniquement des crochets. Il faudrait donc l'adapter pour ne pas l'afficher si on a les crochets mais que "isArray" est égal à "false".
Dernière modification par omega2 (15-08-2010 20:49:21)
Hors ligne
Merci pour ton aide omega2, j'ai finis par trouver une solution, je sais pas si elle est très propre mais elle est rapide à réaliser.
J'ai juste ajouter la méthode suivante à mon select :
$select->setAttrib("multiple", "");
L'attribut multiple a bien disparut, et je me suis pas trop cassé la tête :p
Merci encore :p
Hors ligne
Pages: 1