Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je débute avec Zend et donc aussi avec Zend_Form. Je voudrais modifier un ou plusieurs champs d'une table sql à partir d'une ligne choisie. J'y arrive mais j'ai un petit problème quand il s'agit de manier l'élément Select.
Voilà l'action de mon controller :
function artisteAction() { $this->view->title = "Modifier Artiste"; $id = $this->_getParam('id', 0); $db = new Artiste(); $form = new FormulaireAjouterArtiste(); $artiste = $db->find($id)->current(); $form->populate(array('nom'=>$artiste->nom, 'prenom'=>$artiste->prenom, 'anneeNaissance'=>$artiste->anneeNaiss)); [...] }
J'arrive à remplir les éléments Text ( nom et prenom ) mais l'élément Select ( anneeNaissance ) reste en début de liste.
J'ai essayé avant ça mais cela n'a rien donné aussi :
$form->anneeNaissance->setValue($artiste->anneeNaiss);
Je ne pense pas être sur la bonne piste en donnant une valeur à une liste mais bon. J'ai fait des recherches avant de poster mais je n'ai rien trouvé à ce propos exactement.
Merci d'avance.
Dernière modification par Melunais (27-11-2008 16:22:39)
Hors ligne
C'est écrit dans la doc assez clairment pourtant..
$select->addMultiOptions
Hors ligne
Ca marche. Je ne pensais pas à rajouter la valeur une fois de plus en début de liste. Bref, ca marche. ^^
Merci
Hors ligne
Ha bah finalement pas vraiment. Avec addMultiOptions, si la valeur de l'élément que je veux rajouter à la liste y existe déjà alors rien ne s'y ajoute. Si sa valeur est différente ( ce qui ne m'intéresse pas ), l'élément se rajoute en fin de liste, ce qui n'est pas ce que je veux non plus.
Alors j'ai trouvé autre chose à faire qui marche même si ce n'est pas ce qu'il y a de mieux à faire je pense. Bref, en attendant mieux :
Dans mon controller :
$form->anneeNaissance->clearMultiOptions(); $form->anneeNaissance->addMultiOption($artiste->anneeNaiss, $artiste->anneeNaiss); for($i=1850;$i<2010;$i++) { $form->anneeNaissance->addMultiOption($i, $i); }
J'utilise clearMultiOptions() parce que j'utilise le formulaire à la fois pour l'ajout et la modification.
Ensuite voilà, j'ai l'élément et sa valeur que je veux en début de liste.
Voilà voilà
Hors ligne
Hmmm, je comprends pas la. (et même j'ai compris de travers ta question je crois ! désolé)
Donc, je récapitule :
Pour ajouter les options dans le select :
->addMultiOptions() ou la paire clé/valeur représent valeur/mot affiché
Ensuite, pour selectionner, normalement, ton populate devrait fonctionné si tu passes bien la valeur et non pas le mot à affiché.
Pareil pour setValue
Hors ligne
Pages: 1