Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'utilise depuis peu le framework et je fait toujours
<form action="<?php echo $this->baseUrl ?>/description/<?php echo $this->action; ?>" method="post"> <textarea>blabla</textarea> <input type="submit" value="<?php echo $this->escape($this->buttonText); ?>" /> </form>
Quel est la solution la plus simple pour gérer plusieurs action avec un seul formulaire ?
J'ai trouver des pistes avec la balise "name" du input, mais ca voudrait dire avec une action dans le controller, dans laquel on devrait en faire plusieurs, donc pas super propre.
Merci d'avance
Hors ligne
Bonjour,
Pour les formulaires la règle est la suivante :
1 formulaire = 1 action
Je ne vois pas ce qu'il y a de choquant dans le fait de faire plusieurs traitement dans ton action du controlleur.
Je dirai même l'inverse, c'est ce qu'il faut faire.
D'autres avis ? Et surtout si des avis contraires, je suis preneur d'explications
Geoffrey
Dernière modification par Geoffrey (09-11-2007 16:05:48)
Hors ligne
je vais souvant même plus loin quelque soit le bouton de mon formulaire il renvois toujours sur l'action checkForm de mon controller
la première chose que cette action fait c'est de déterminer l'action à faire en fonction du bouton pressé
et elle fait un redirect vers la bonne action.
j'en suis venus à découper ma gestion de formulaire en tout petit bout et c'est devenu beaucoup plus simple et souple pour les enchaînement.
la methode add prépare un formulaire pour une création et renvois vers showForm
la méthode edit recherche un élément par son id et le prépare pour le formulaire. si elle trouve l'élément à éditer un redirect sur showform sinon retour à l'action précédente
la méthode showForm s'occupe que de l'affichage du formulaire (affectation de la vue préparation des boutons etc.)
l'action checkForm récupère les données du formulaire et redirige vers l'action approprié généralement verif
l'action verifForm (parfois confondu avec checkForm) vérifie les données et retourne sur showForm ou renvois sur save
l'action save enregistre les donnée en cas d'échec redirect sur showForm sinon retour à l'action qui à précédé le add ou le édit (gardé en session)
ainsi si dans le formulaire je prévois un bouton supprimer par exemple je rajoute une redirection dans checkForm vers confirmForm
l'action confirmForm s'occupe d'afficher une demande de confirmation avec rappel des données qui vont être supprimée. avec le bouton supprimer qui renvois sur l'action remove et annulé qui fait un retour à l'envoyeur
l'action remove supprime l'enregistrement.
etc.
du coup je peux facilement débrancher un enchaînement pour ajouter une traitement ou arriver sur une partie du processus depuis un autre contrôleur.
par exemple dans le formulaire d'édition d'un user j'ai les boutons add et edit profil qui renvoient sur les actions correspondantes du contrôleur profile qui lui même lorsqu'il a fini revient sur l'action qui précédait le add ou le edit soit donc le checkForm de mon contrôleur user c'est transparent pour le contrôleur profile qui ne sait d'où vient la demande d'ajout ou de modif.
A+JYT
Hors ligne
Il est normal de pouvoir avoir une page pour plusieurs actions : en effet, il arrive fréquemment d'avoir plusieurs actions pour la même page car chacune va mettre à jour des parties différentes de la page.
Donc, à la fin de chaque action, tu rediriges vers la même page.
Hors ligne