Zend Framework : un helper pour afficher les messages Flash

Logo Zend Framework

L'aide de contrôleur FlashMessenger permet de stocker des messages dans la session. On peut ainsi les retrouver dans la requête suivante. C'est très pratique pour informer l'utilisateur qu'une opération comme la soumission d'un formulaire s'est bien déroulée.

<?php
class MonControleur extends Zend_Controller_Action
{
    public function 
premiereAction()
    {
        
$this->getHelper('FlashMessenger')->addMessage('Sauvegarde réalisée !');
        
$this->_redirect('/mon-controleur/deuxieme');
    }

    public function 
deuxiemeAction()
    {
        
$this->view->messages $this->getHelper('FlashMessenger')->getMessages();
    }
}
?>

Dans la première action, l'aide d'action stocke le message dans un espace de nom de la session. Ce message est retrouvé dans la requête suivante pour être affiché. Il est ensuite supprimé.

Comme vous le voyez, il faut à chaque fois injecter les messages dans la vue. Pour éviter cela, vous pouvez utiliser ce helper :

<?php
class Wiip_View_Helper_DisplayFlashMessages extends Zend_View_Helper_Abstract
{
    
/**
     * Retourne une liste HTML des messages flash
     *
     * @return string
     */
    
public function displayFlashMessages()
    {
        
$flash Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
        if (
$flash->count()) {
            return 
$this->view->htmlList(
                
$flash->getMessages(),
                
false,
                array(
'id' => 'messages')
            );
        } else {
            return 
'';
        }
    }
}
?>

On utilise le gestionnaire des aides d'action Zend_Controller_Action_HelperBroker pour retrouver l'helper FlashMessenger. Pour pouvoir utiliser cette aide, vous devez sauvegarder ce composant dans le fichier /library/Wiip/View/Helper/DisplayFlashMessages.php et ajouter le répertoire aux chemins de recherche des aides de vue :

<?php
// Dans votre bootstrap
$view Zend_Layout::getMvcInstance()->getView();
$view->addHelperPath('Wiip/View/Helper''Wiip_View_Helper_');
?>

Vous pouvez alors l'utiliser de la façon suivante :

<?php
<!-- Dans vos scripts de layout -->
<?
php echo $this->displayFlashMessages() ?>

La liste HTML est associée à l'ID messages qui peut être utilisé pour appliquer des styles CSS.

Ajouter un commentaire