IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Fonctionnement de FlashMessenger ¿ [ZF 1.8]


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut Fonctionnement de FlashMessenger ¿
    'soir,

    je n'arrive pas à faire fonctionner FlashMessenger, voici un exemple qui me renvoi un array vide (v1.8.2) :

    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
    class testController extends Zend_Controller_Action
    {
       /**
         * @var Zend_Controller_Action_Helper_FlashMessenger
         */
        protected $_flashMessenger = null;
     
     
        public function init ()
        {
        	$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
        }
     
        public function postDispatch(){
        	$this->view->messages2user = $this->_flashMessenger->getMessages();
        }
     
        public function avAction(){
        	$this->_helper->viewRenderer->setRender('index');
        	$this->_flashMessenger->addMessage('salut alors ça marche ce truc de merde !');
            $this->_redirect('/test/ap');
        }
        public function apAction(){
        	$this->_helper->viewRenderer->setRender('index');
        }
    Pour infos :
    - J'ai forcer le script de rendu index pour ne pas créer les autres, c'est juste un test.
    - Dans mon layout j'ai simplement inclus mon script msg2user.phtml qui contient la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php Zend_Debug::dump($this->messages2user)?>

    Une idée ? Le but est de faire une petite classe pour gérer les message utilisateur et d'utiliser zend_registry pour les message a afficher dans l'action courante (sans redirection après affectation du message donc) mais on verra ça plus tard hein

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    J'ai testé ton code en 1.7 et 1.8.2, et ça fonctionne...
    Tu n'as pas de message d'erreur ?
    Si tu remplaces '$this->_flashMessenger->getMessages();' par du texte, ton texte est affiché ?

  3. #3
    Membre confirmé Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Bonjour,

    oui oui avec un echo 'test'; dans le postDispatch avant le getmessages() 'test' s'affiche correctement.

    Tu arrives à afficher le 'salut alors ça marche ce ...' ?

    Dans le layout voila comment j'appele le fichier affichant les messages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->render('msgUser.phtml'); ?>

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par kreatik Voir le message
    oui oui avec un echo 'test'; dans le postDispatch avant le getmessages() 'test' s'affiche correctement.
    Et avec un $this->view->messages2user = 'test' ?

    Citation Envoyé par kreatik Voir le message
    Tu arrives à afficher le 'salut alors ça marche ce ...' ?
    Oui

    Citation Envoyé par kreatik Voir le message
    Dans le layout voila comment j'appele le fichier affichant les messages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->render('msgUser.phtml'); ?>
    Ca fonctionne toujours. Le problème doit être ailleurs... Est-ce que tu n'instancies bien qu'une fois le FlashMessenger ?

  5. #5
    Membre confirmé Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Et avec un $this->view->messages2user = 'test' ?
    Cela fonctionne (string(4) "test")

    Le FlashMessenger est instancié dans le controller > init().

    voici le bootstrap :

    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
    <?php
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    	protected function _initAutoload() {
    		$moduleLoader = new Zend_Application_Module_Autoloader ( array ('namespace' => '', 'basePath' => APPLICATION_PATH ) );
    		return $moduleLoader;
    	}
    	function _initViewHelpers() {
    		$this->bootstrap ( 'layout' );
    		$layout = $this->getResource ( 'layout' );
    		$view = $layout->getView ();
    		$view->doctype ( 'XHTML1_STRICT' );
    		$view->headMeta ()->appendHttpEquiv ( 'Content-Type', 'text/html;charset=utf-8' );
    		$view->headTitle ()->setSeparator ( ' - ' );
    		$view->headTitle ( 'Ndes' );
    		Zend_Dojo::enableView($view);
     
    		// Init session
    		Zend_registry::set("session",new Zend_Session_Namespace('ndes'));
     
    		$container = new Zend_Navigation(array(
    		    array(
    		       ...
    		    );
    		$view->navigation($container);
    	}
    }
    Le htacces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # "active" PHP5
    SetEnv PHP_VER 5
     
    # Désactive le paramètre register_globals
    SetEnv REGISTER_GLOBALS 0
    # Désactive le paramètre magic_quotes_gcp
    SetEnv MAGIC_QUOTES 0
    # Désacrtive session.auto_start de PHP
    php_value session.auto_start 0


    edit : PHP 5.2.9-2

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bizarre...

    le FlashMessenger stocke les messages dans les données de session. Quand on l'instancie, il récupères les messages et vide le contenu de la session qui le concerne. On va essayer de vérifier que les données de la session sont bien présentes lors de l'appel à l'action ap... Essaies en modifiant ton contrôleur test comme suit :
    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
    class testController extends Zend_Controller_Action
    {
       /**
         * @var Zend_Controller_Action_Helper_FlashMessenger
         */
        protected $_flashMessenger = null;
     
     
        public function init ()
        {
    //    	$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
        }
     
        public function postDispatch(){
        	$this->view->messages2user = $this->_flashMessenger->getMessages();
        }
     
        public function avAction(){
        	$this->_helper->viewRenderer->setRender('index');
        	$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
        	$this->_flashMessenger->addMessage('salut alors ça marche ce truc de merde !');
            $this->_redirect('/test/ap');
        }
        public function apAction(){
            Zend_Session::start();
            Zend_Debug::dump($_SESSION);
            exit;
        	$this->_helper->viewRenderer->setRender('index');
        }
    (j'ai commenté l'instanciation du FlashMessenger dans l'initialisation, je l'ai mise dans l'action av, et j'ai ajouté l'affichage du tableau de session dans ap)
    Est-ce que la session contient bien ton message ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/06/2003, 16h51
  2. Réponses: 5
    Dernier message: 14/05/2003, 14h51
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo