Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous
J'ai une liste d'items que j'affiche dans un tableau grace à une boucle de ce type (coté vue)
foreach( $this->items as $key => $item) :
Tout marche tres bien. ce que je voudrai c'est à chaque ligne de mon tableau, afficher une checkbox.
Qu'il y ait 1 ou 100 checkbox, c'est un unique formulaire : le but du jeu est de récupérer autant d'id que de lignes cochées.
En procédural, j'avais un truc comme ça :
en dehors de ma boucle, le FORM
dans ma boucle (à chaque ligne donc) :
"<input type=\"checkbox\" value=\"$id\" name=\"envoyer[]\""
Ce qui me permettait de récupérer mes id pour traitement.
Le probleme, en MVC, c'est que je ne vois pas comment ne pas faire cela dans ma vue, hors ce n'est pas comme cela que l'on est sensé faire non ?
j'ai bien créé mon formulaire mais si je le mets dans ma boucle :<td> echo $this->formmasse; </td>
il me génère bien sur autant de formulaires différents que j'ai de lignes.
Y a t il une solution propre ( MVC parlant ) pour avoir un seul formulaire avec un bouton envoyer en bas de page ?
Edit : si je mets dans ma boucle un <td><?php echo $this->formmasse->check; ?></td>
cela me génère bien une checkbox par ligne et en dehors de la boucle j'affiche juste le bouton.
Mais comment générer un tableau de checkbox soit le fameux name="envoyer[]" ?
Dernière modification par manuzed78 (13-02-2012 16:03:24)
Hors ligne
Salut, j'ai pas tout compris à ce que tu voulais faire. Mais tu peux faire ça côté formulaire.
Tu passes en paramètre de ton contrôleur ta liste et dans celui-ci tu boucles pour créer un checkbox sur chaque.
Ensuite tu gères ton formulaire comme n'importe quel autre formulaire. Je sais pas si c'est vraiment propre pour du MVC mais c'est comme ça que je ferais.
Hors ligne
Orkin a écrit:
Salut, j'ai pas tout compris à ce que tu voulais faire. Mais tu peux faire ça côté formulaire.
Tu passes en paramètre de ton contrôleur ta liste et dans celui-ci tu boucles pour créer un checkbox sur chaque.
Ensuite tu gères ton formulaire comme n'importe quel autre formulaire. Je sais pas si c'est vraiment propre pour du MVC mais c'est comme ça que je ferais.
Du progrès :
dans mon formulaire :
$check = new Zend_Form_Element_MultiCheckbox( 'check',array());
$check->setRequired( false );
et dans ma vue :
<td><?php echo $this->formmasse->check->addMultiOption($scelle['id_scelle'], $scelle['id_scelle']); ?></td>
et c'est presque bon : seul hic : il concatène les checkbox : au dizieme item: j'ai une ligne qui comprend 10 checkbox ...
Comprends tu mieux ce que je veux faire?
en fait récupérer un ensemble de ID (les ID de mes items cochés) pour un traitement ultérieur.
Hors ligne
Non je vois pas :s
Hors ligne
Tu devrais faire comme Orkin dit, tu généré directement dans ton formulaire
Hors ligne
Orkin a écrit:
Non je vois pas :s
J'ai trouvé
dans ma vue, j'ai fait un :
<td><?php $this->formmasse->check->clearMultiOptions(); // evite la concaténation des checkbox echo $this->formmasse->check->addMultiOption($scelle['id_scelle'], $scelle['id_scelle']); ?></td>
Concrètement, tu as ta liste d'items dans un tableau, sur chaque ligne, tu as une checkbox avec un value="ici l'ID de ton item"
merci
Hors ligne
Perso j'ai rien capté à ce que tu as fait, ça me semble un peu bizarre ton truc dans la vue, tu le fait sur une boucle?
Hors ligne
shadypierre a écrit:
Perso j'ai rien capté à ce que tu as fait, ça me semble un peu bizarre ton truc dans la vue, tu le fait sur une boucle?
Oui, dans une boucle.
Imagine par exemple que tu as une liste de personnes.
dans ton tableau tu génères un bouton pour les supprimer (par exemple)
si tu as 50 personnes à supprimer, tu es obligé de les supprimer une à une...
alors que ,dans le principe, ce que je veux faire, c'est de cocher X personnes,
envoyer les X ID et effectuer mon traitement (suppression dans mon exemple) sur les X personnes. Et ce en une seule action de formulaire et non X actions.
Hors ligne
shadypierre a écrit:
Perso j'ai rien capté à ce que tu as fait, ça me semble un peu bizarre ton truc dans la vue, tu le fait sur une boucle?
Je rebondis pour te prendre un bien meilleur exemple :
dans phpmyadmin, tu as sur chaque ligne d'enregistrement la possibilité de cocher l'enregistrement pour
soit le modifier soit le supprimer .
en fait, il récupère l'ensemble des id des enregistrements cochés pour traitement.
Pour cela, la solution proposée plus haut me donne un résultat valable en html, malheureusement
j'ai crié victoire un peu trop tot car pour une raison inconnue, les id ne passent pas ...
alors que si je mets mon formulaire dans ma vue ( un peu à l'ancienne) de cette manière :
<form method ="post" action=""> <table> foreach ( ... ): // ici ma boucle sur mes items <td><input type="checkbox" value="$mon_id" name="envoyer[]" /></td> <td>...</td> endforeach; </table> </form>
La pour le coup, je vois bien avec firebug que je passe en post les différents id cochés...
en fait en utilisant Zend_Form et le multicheck box, si je n'utilise pas clearmultioptions, a chaque ligne les checkbox se concatènent ( au 10eme item, j'ai 10 checkbox !) et avec clearmultioptions, le html semble bon mais les id ne passent pas en post ...
Si quelqu'un a une idée pour reproduire ceci en mvc je suis toujours preneur.
Et si vous avez un avis à donner sur la methode qui marche ci dessus ( est ce propre?)...
Dernière modification par manuzed78 (15-02-2012 09:31:52)
Hors ligne
Je reste sur l'idée que tu peux faire la même chose directement dans ton form et non dans ta vue. Ca te laisse plus de souplesse pour ce genre de problème.
Hors ligne
Orkin a écrit:
Je reste sur l'idée que tu peux faire la même chose directement dans ton form et non dans ta vue. Ca te laisse plus de souplesse pour ce genre de problème.
euh oui, mais comment exactement ?
Hors ligne
En faisant ta boucle directement dans le formulaire plutôt que dans ta vue.
Hors ligne
Orkin a écrit:
En faisant ta boucle directement dans le formulaire plutôt que dans ta vue.
Ca tombe bien, j'étais juste dans cette logique...
mais c'est bien complexe pour moi : quand tu as une vue un peu complexe ( des class différentes pour avoir des couleurs en fonction du résultat d'une requete) et la multiplication des decorators => les tr, les td et tous ce que je veux afficher dans ma ligne de tableau...
Ca me parait trop complexe pour l'instant.
Hors ligne
Pages: 1