Bonjour tout le monde,
Je me demande comment fonctionne le controller helper '_forward'.
Voici mon soucis:
J'ai une action (monAction) qui qui contient une form.
La form envoi son post sur un autre action du même controller (formAction).
Dans cette dernière, je vérifie le post et en cas de succès je redirige sur une dernière action(succesAction) sinon je forward sur monAction pour réafficher le formulaire.
Le problème c'est qu'après le forward le formulaire est réinitialisé à alors que c'est un attribut de mon controller. Ce qui sous entend que le forward ré-instancie le controller ...
Un peu de code pour illustrer ceci :
Avec ce code, mon message d'erreur s'affiche bien mais la form est vide alors qu'elle devrait contenir ce qui a été posté ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?php class monController extends Zend_Controller_Action { $_form; /** * Returns the comment form */ protected function _getForm() { if(null === $this->_form) { $this->_form = new My_Form(); } return $this->_form; } public function monAction() { $this->form = $this->_getForm(); } public function formAction() { $form = $this->_getForm(); if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) { // IsValid rempli la form $this->_redirect('http://monsite/mon/succes'); } else { $this->view->message('Données incorrectes'); } $this->_forward('mon'); } public function succesAction() { $this->view->message('Données enregistrées'); } }
Partager