Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-12-2008 17:58:27

jean
Membre
Date d'inscription: 25-08-2008
Messages: 107

[1.7][Résolu] Décalage d'affichage de FlashMessenger

Le problème : les messages passés à FlashMessenger ne s'affichent pas la "première fois".  Cela ressemeble à un problème de "pile" ou d'ordre d'exécution.

Par exemple, il faut que j'accède 2 fois à une action inconnue pour que s'affiche le message d'erreur.

Cela doit venir de redirections que j'effectue et de l'ordre d'exécution des étapes du MVC :

- depuis le plugin de gestion des ACL :

         si la ressource n'existe pas : throw exception(' Ressource inconnue')

         si je n'ai pas le droit d'accéder à la ressource, retour au login et message Flash
                $request->setModuleName('default');
                $request->setControllerName('login');
                $request->setActionName('login');
                $flashmessage = new Zend_Controller_Action_Helper_FlashMessenger ;
                $flashmessage->addMessage('Accès réservé, vous devez être authentifié.');

- dans l'error controller :
         suivant l'erreur rencontrée :
                ex:           case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:   
                $this->_helper->FlashMessenger->addMessage("Action inconnue.");
                $this->_forward('index', 'index', 'default');
                break;   

- ... et dans le Layout, j'affiche les messages Flash par :

                    $flash = new Zend_Controller_Action_Helper_FlashMessenger ;
                    if ($flash->hasMessages()){
                        echo "<div id=\"error-message\">"
                                                       . implode("<br />", $flash->getMessages()).
                        "</div>";
                    }

Avez-vous des idées ou des pistes ????

Jean

Dernière modification par jean (16-12-2008 16:50:29)

Hors ligne

 

#2 15-12-2008 19:46:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

Hello,

Dans ton code, entre ton plugin ACL et ton error controller, tu es dans la même requête donc c'est normal de ne pas récupérer les infos du flash messenger qui attend la requête suivante pour renvoyer les données. Dans un même contexte, tu peux utiliser le registre pour stocker ton message.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 16-12-2008 09:53:37

jean
Membre
Date d'inscription: 25-08-2008
Messages: 107

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

... donc si je comprends bien, le message Flash créé ne sera accessible qu'après la fin de la requête, c'est à dire APRES le rendu de la vue, du layout, des divers POST-xxx, etc. La requête SUIVANTE y accédera. C'est bien çà ?

Mais alors, à quoi sert Flash Messenger et quels sont les cas typiques d'utilisation ? Quel est ton avis ?

Hors ligne

 

#4 16-12-2008 10:36:08

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

J'ai essayé d'utiliser FlashMessenger.
J'ai l'impression que sa portée se limite au contrôleur en cours!
ça peut être une bêtise mais c'est ce que je pense!
   roll

Hors ligne

 

#5 16-12-2008 10:47:46

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

Hello,

Exemple d'utilisation: tu appelles une action qui doit émettre une redirection pour finir. Tu stockes un éventuel message dans Flash pour le récupérer dans la requête HTTP suivante, juste après la redirection.

La portée n'est pas limitée. On peut stocker le message dans un(e) module, contrôleur ou action, et le lire dans un(e) autre.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 16-12-2008 16:50:01

jean
Membre
Date d'inscription: 25-08-2008
Messages: 107

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

OK, merci, je vais utiliser prioritairement Zend_Registry pour passer les messages sans ces contraintes.

Jean

Dernière modification par jean (16-12-2008 16:50:42)

Hors ligne

 

#7 17-06-2009 16:53:16

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: [1.7][Résolu] Décalage d'affichage de FlashMessenger

jean a écrit:

OK, merci, je vais utiliser prioritairement Zend_Registry pour passer les messages sans ces contraintes.

Jean

Salut,

désolé de remonter ce vieux tropique.
Mais as-tu réussi à résoudre ce souci finalement ?

J'ai pratiquement la même chose que toi :

plugin de gestion des ACL :

Code:

if (!$this->_auth->hasIdentity()){
        $module = self::FAIL_AUTH_MODULE;
        $controller = self::FAIL_AUTH_CONTROLLER;
        $action = self::FAIL_AUTH_ACTION;

        $flash = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
        $flash->addMessage('Veuillez vous logguer pour accéder à votre article');
}

$request->setModuleName($module);
$request->setControllerName($controller);
$request->setActionName($action);

et sur le layout :

Code:

<div id="homeflashmessage"><?= $this->homeflashmessage ?></div>

Mais je n'ai rien qui s'affiche sad

edit : resolved. Je me suis planté dans $this->homesflashmessage -_-

Dernière modification par supertino7 (17-06-2009 17:46:44)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages