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