Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/03/2011, 09:30
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: [Zend] FlashMessenger En Bootstrap

Yo lo que hago es mejor un controller plugin, que me inyecta automaticamente los mensajes en el view, y con un view helper los despliego, así me evito tener que pasarlos a la vista o comprobarlos, dejo el ejemplo:
Código PHP:
Ver original
  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | Gecko Framework                                                        |
  5. // +------------------------------------------------------------------------+
  6. //
  7. require_once 'Zend/Controller/Plugin/Abstract.php';
  8.  
  9. /**
  10.  * Gecko_Controller_Plugin_FlashRenderer
  11.  *
  12.  * Zend Controller Plugin for setting the flash messages
  13.  *
  14.  * @package \Gecko\Controller\Plugin;
  15.  * @author Christopher Valderrama <[email protected]>
  16.  * @access public
  17.  **/
  18. class Gecko_Controller_Plugin_FlashRenderer
  19.     extends Zend_Controller_Plugin_Abstract {
  20.     /**
  21.      * Check if there are Messages and assing them to the view
  22.      *
  23.      * @param Zend_Controller_Request_Abstract $request
  24.      * @return void
  25.      */
  26.     public function preDispatch(Zend_Controller_Request_Abstract $request) {
  27.         $FlashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
  28.         $aMessages = $FlashMessenger->getMessages();
  29.         $ViewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
  30.         $ViewRenderer->initView();
  31.         $ViewRenderer->view->FlashMessages = $aMessages;
  32.     }  
  33. }

Código PHP:
Ver original
  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | Gecko Framework                                                        |
  5. // +------------------------------------------------------------------------+
  6. //
  7. require_once 'Zend/View/Helper/Abstract.php';
  8.  
  9. /**
  10.  * Gecko_View_Helper_DisplayFlashMessages
  11.  *
  12.  * Zend View Helper Plugin to display Session Flash Messages
  13.  *
  14.  * @package \Gecko\View\Helper;
  15.  * @author Christopher Valderrama <[email protected]>
  16.  * @access public
  17.  **/
  18. class Gecko_View_Helper_DisplayFlashMessages extends Zend_View_Helper_Abstract
  19. {
  20.     public function displayFlashMessages()
  21.     {
  22.         $aMessages = $this->view->FlashMessages;
  23.         if (count($aMessages) > 0) {
  24.             $sMessageOutput = '<div id="flashM" title="Mensaje"><ul>';
  25.             foreach ($aMessages as $sMessage) {
  26.                 $sMessageOutput .= '<li>' . $sMessage . '</li>';
  27.             }
  28.             $sMessageOutput .= '</ul></div>';
  29.            
  30.             $jQuery = $this->view->jQuery();
  31.             $jQuery->enable()->uiEnable(); // enable jQuery Core Library
  32.            
  33.             $jqHandler = ZendX_JQuery_View_Helper_JQuery::getJQueryHandler();
  34.             $sJqueryScript = $jqHandler.'("#flashM").dialog({
  35.                 modal:true,
  36.                 buttons: {
  37.                     Ok: function() {
  38.                         '.$jqHandler.'(this).dialog("close");
  39.                     }
  40.                 }
  41.             });';
  42.            
  43.             $jQuery->addOnload($sJqueryScript);
  44.            
  45.             return $sMessageOutput;
  46.         }
  47.     }
  48. }

Para desplegarlos uso jQuery y creo un dialog con jQueryUI.

Saludos.