FlashMessanger est à la base un action helper, donc confiné au contrôleur. Celui-ci permet de passer un message d’une page à l’autre via le mécanisme des sessions . Après un formulaire on doit souvent ajouter un message de confirmation, on peux par exemple utilisé le FlashMessenger pour le faire et ainsi au ré-affichage suivant afficher ce message! C’est tellement pratique qu’il est dommage de ne pas pouvoir l’utiliser a travers les vue (view) de manière automatique…
Je vous propose donc de l’utiliser via un view helper!
L’aide de vue
Voici l’aide de vue (view helper) FlashMessenger (du même nom que l’action helper). Il est à placer dans application/views/helpers/FlashMessenger.php
<?php /** * @see Zend_Controller_Action_Helper_FlashMessenger */ require_once 'Zend/Controller/Action/Helper/FlashMessenger.php'; /** * @author grummfy */ class Zend_View_Helper_FlashMessenger extends Zend_View_Helper_Abstract implements IteratorAggregate, Countable { protected $_fm; public function __construct() { $this->_fm = new Zend_Controller_Action_Helper_FlashMessenger(); } public function flashMessenger($cur = false) { if ($cur) return $this; else return $this->getMessages(); } /** * Return currents FlashMessegenr object * @return Zend_Controller_Action_Helper_FlashMessenger */ public function getFlasMessenger() { return $this->_fm; } /** * Return previous emmited messages * @return array */ public function getMessages() { return $this->_fm->getMessages(); } /** * Renvoi le nombre de messages passé * @return int */ public function hasMessages() { return count($this->_fm); } public function getIterator() { return $this->_fm->getIterator(); } public function count() { return $this->_fm->count(); } } # EOF
Utilisation
Pour l’utiliser rien de plus simple, par exemple dans le layout :
<?php // flashmessage if ($this->flashMessenger(true)->hasMessages()): ?> <div id="flashMessengers"> <?php foreach($this->flashMessenger() as $msg) { echo '<div class="flashMessenger">'; if (is_array($msg)) echo implode('<br />', $msg); else echo $msg; echo '</div>'; } ?> </div> <?php endif; // fin flashmessage ?>
Ceci peut très bien être utilisé dans votre vue (view) avec exactement le même code!
Pour envoyer le message il vous suffit de simplement faire, dans votre contrôleur :
$this->_helper->flashMessenger('Mise à jour du truc effectuées avec succès!');
Et c’est tout!
Similar Posts:
- Tri de listing sql via des liens dans Zend Framework
- Zend Framework aide de vue partialLoop et cycle
- Zend Framework (ZF) : un livre d’or, quatrième étapes : Affichages et ajout de messages
- Zend Framework (ZF) : un livre d’or, cinquième étapes : Modification et suppression des messages
- Zend Framework (ZF) : un livre d’or, deuxième étapes : Créations des tables sql et répertoires
Tags : php, programmation, trucs et astuces, web, ZF