Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
il m'arrive un problème de fou, je comprends rien.
Ce matin je me sers de FlashMessenger pour envoyer des messages d'infos après édition de liste.
Tout marche nickel, je pars manger je reviens, plus rien ne marche.
Mon code :
public function modifierAction { ....... if ($form->isValid($formData)) { foreach ($rows as $row) { //Affectation des nouvelles valeurs vérifiées if(!empty($formData[$row->id_utilisateur]['password'])) $row->password = md5($formData[$row->id_utilisateur]['password']); $row->login = $formData[$row->id_utilisateur]['login']; $row->profil = $formData[$row->id_utilisateur]['profil']; $row->save(); } $pagination = $this->getPagination(); $this->_helper->FlashMessenger('La modification des utilisateurs a bien été effectuée'); $this->_redirect("users?page=".$pagination['page']."&order=".$pagination['order']."&ordertype=".$pagination['ordertype']); } ..... } public function listerAction() { $table = new User(); $page = $this->_hasParam('page') ? $this->_getParam('page') : 1; $nb_par_page = $this->_hasParam('nb_par_page') ? $this->_getParam('nb_par_page') : 20; $result = $table->liste($this->_getParam('order'), $this->_getParam('ordertype') ,array($page , $nb_par_page)); $this->view->data = $result; $this->view->title = sprintf($this->view->_('Liste (nb,champ) %1$d %2$s'),$result->count(),$this->view->_('users')); $this->view->thisUrl = $this->view->BaseUrl() . $this->getRequest()->getPathInfo(); $this->view->message = $this->_helper->FlashMessenger->getMessages(); }
Si je fais un die() à la fin de listerAction et que j'affiche $this->view->message , il contient bien un tableau avec "'La modification des utilisateurs a bien été effectuée'"
Dans ma vue j'affiche mes messages:
foreach($this->message as $message) { echo $message; }
Si je mets un die après l'écho, le message s'affiche bien, sinon j'ai aucun affichage et rien dans la source, j'ai l'impression qu'il y a une redirection, bref y a quelquechose de bizarre qui se passe, surtout que je n'ai strictement rien touché !
Quelqu'un pourrait me donner un coup de main pour trouver l'origine du probleme ?
Merci
Dernière modification par sebondus (28-05-2008 14:47:18)
Hors ligne
modifierAction est appelé apres ton listerAction?
En tout cas il manque () au niveau de déclaration de modifierAction
A premiere vue ca me semble normal la redirection, puisque tu fait un $this->_redirect juste apres avoir rempl ton FlashMessenger....
Jpeut pas vraiment aider plus, je suis pas fan de MVC
Hors ligne
stf a écrit:
modifierAction est appelé apres ton listerAction?
En tout cas il manque () au niveau de déclaration de modifierAction
A premiere vue ca me semble normal la redirection, puisque tu fait un $this->_redirect juste apres avoir rempl ton FlashMessenger....
Jpeut pas vraiment aider plus, je suis pas fan de MVC
Non lister action est appellé après modifierAction en cas de reussite de la modification.
Pour listerAction, je l'ai écris à la main ...j'ai oublié les () sinon ça ne marcherait pas.
FlashMessenger sert justement à mettre des messages en session pour pouvoir les afficher après redirection ... j'ai aucun probleme à afficher le message dans listerAction si je fais un die(), donc le message est bien setté.
Dernière modification par sebondus (28-05-2008 15:02:39)
Hors ligne
Bonjour ,
flashmessenger utilise les sessions pour stoker les message :
vérifie que tu ne detruit pas la session entre 2 redirect.
flashmessenger supprime les message affichés :
trace ton code et verifi que tu ne fais pas une "double redirection " :
genre :
action A :set message et redirige vers B
action B : affiche message et redirige vers C (donc pas d'affichage visible coté client)
action C : le message setté en A aura disparu car effacé du flashmessenger.
c'est juste des pistes ....
Hors ligne