Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
mon problème est que j'ai 1 formulaire que j'instancie dans premierAction(). Maintenant, lorsque je valide mon formulaire,je voudrai récupérer les valeurs dans deuxiemeAction() et rendre le résultat a la vue deuxieme.phtml
j'ai essayer d'utiliser setAction mais sans succès.
Remarque : j'ai pris la peine de chercher avant d'atterrir ici.
Merci
Dernière modification par patiecco (04-03-2010 10:23:15)
Hors ligne
Bonjour Patiecco,
Peut-être en utilisant la redirection :
$this->_helper->redirector('ACTION', 'CONTROLLEUR', null, array('PARAMETRE1'=>'VALEUR1','PARAMETRE2'=>'VALEUR2'));
@+
Stéphan.
Hors ligne
Pourquoi ne pas tout simplement mettre deuxiemeAction dans le champ action du formulaire ?
Hors ligne
patiecco a écrit:
Bonjour,
mon problème est que j'ai 1 formulaire que j'instancie dans premierAction(). Maintenant, lorsque je valide mon formulaire,je voudrai récupérer les valeurs dans deuxiemeAction() et rendre le résultat a la vue deuxieme.phtml
j'ai essayer d'utiliser setAction mais sans succès.
Remarque : j'ai pris la peine de chercher avant d'atterrir ici.
Merci
Et c'est pourtant bien la solution à utiliser. Es-tu certains de l'avoir bien renseigné ?
Hors ligne
Afin je crois l'avoir bien fait !!!! j'ai mis : $this->setAction('index/deuxieme');
La redirection se déroule normalement je n'arrive pas a récupérer les valeurs du formulaire.
Je vais néanmoins ressayer.
Merci.
Dernière modification par patiecco (27-02-2010 14:00:38)
Hors ligne
En fait, quand j'essaie de récupérer les valeurs postées dans deuxiemeAction(), il ya une erreur du fait que le formulaire n'est pas connu dans deuxiemeAction(); ce qui semble être logique car il n'y a pas été instancié.
Dans ce bout de code, le formulaire est instancie et tranmis a la vue dans indexAction(). Cependant, apres validation du formulaire, les données doivent être recueillies dans accueilAction(). Du coup, il ya l'erreur suivante Undefined variable: leformulaire in........... dans accueilAction().
public function indexAction()
{
$leformulaire = new FormulaireNouvelleInscription();
$this->view->form = $leformulaire ;
}
public function accueilAction()
{
if($this->getRequest()->isPost())
{
if($leformulaire->isValid($_POST))
{
$data = $leformulaire->getValues();
$this->view->title = "SUCCES";
}
}
}
Merci d'avance
Dernière modification par patiecco (27-02-2010 18:17:28)
Hors ligne
Déjà : $this->setAction('/index/deuxieme'); N'oublie pas le premier /.
Ensuite, si je comprends bien tu affiches ton formulaire dans premiereAction et tu le traites dans deuxièmeAction ?
Donc :
public function premiereAction() { $form = new MonFormulaire(); $this->view->form = $form; }
Puis tu récupères les valeurs dans ton deuxième action :
public function deuxiemeAction() { $form = new MonFormulaire(); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost()) { $data = $form->getValues(); } } }
Hors ligne
Ou alors tu peux également crééer ton formulaire dans la fonction init() qui est appelée pour chaque action, si ça t'ennuie d'avoir la ligne $form = new MonFormulaire dans toutes les actions. Mais le fait est qu'en le créant dans les actions ou tu t'en sers uniquement ça t'évite de le créer dans les actions ou tu ne t'en sers pas.
Hors ligne
c'est pas plutôt $this->form->setAction(); ??
vu que c'est une fonction du formulaire et non de la vue.
Hors ligne
La session est la seule manière de conserver les données entre deux requêtes
Hors ligne
throrin19 a écrit:
c'est pas plutôt $this->form->setAction(); ??
vu que c'est une fonction du formulaire et non de la vue.
Bonjour throrin19,
ta réponse n'est pas toutafait fausse a mon avis, c'est un problème d'emplacement et de portee : ici, nous sommes dans notre formulaire et dans ce cas, nous faisons $this->setAction('url');
Par contre quand nous sommes par exemple dans indexAction(), nous pouvons ecrire : $form->setAction('url');
Hors ligne
bakura a écrit:
Déjà : $this->setAction('/index/deuxieme'); N'oublie pas le premier /.
Ensuite, si je comprends bien tu affiches ton formulaire dans premiereAction et tu le traites dans deuxièmeAction ?
Donc :Code:
public function premiereAction() { $form = new MonFormulaire(); $this->view->form = $form; }Puis tu récupères les valeurs dans ton deuxième action :
Code:
public function deuxiemeAction() { $form = new MonFormulaire(); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost()) { $data = $form->getValues(); } } }
bonjour bakura,
j'ai teste ta solution et cela marche tres bien a part ke o lieu de $this->setAction('/index/deuxieme'); j'ai mis $this->setAction('deuxieme');
Merci beaucoup.
Hors ligne
StefC30 a écrit:
Bonjour Patiecco,
Peut-être en utilisant la redirection :
$this->_helper->redirector('ACTION', 'CONTROLLEUR', null, array('PARAMETRE1'=>'VALEUR1','PARAMETRE2'=>'VALEUR2'));
@+
Stéphan.
Bonjour Stéphan,
je suis entrain de tester ta solution,mais je me suis heurté a quelques problèmes. Cependant, je compte aller jusko bout.
A tres bientot et merci encore.
Hors ligne
Bonjour,
je reviens sur la discussion parce que le passage de paramètres se déroule normalement. Mais depuis lors, validateurs et filters ne fonctionnent plus.J'ai presque épuisé mes ressources.
Merci
Hors ligne