Así que me estoy creando un proyecto con zend-marco jurídico y estoy tratando de implementar el flash mensajero ayudante, pero no puedo encontrar ninguna buena práctica para ponerlo en práctica.
Lo que necesito es usar el flash messenger para enviar un mensaje y redirigir, mientras que el mensaje aparecerá directamente en un lugar específico en el diseño.phtml.
Yo sé que para el redirector puedo hacer eso:

$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$redirector->gotoUrl('/my-controller/my-action/param1/test/param2/test2')
               ->redirectAndExit();'

¿Qué puedo hacer para que el flash messanger para que funcione ? y ¿cuál es la mejor práctica para que ?

InformationsquelleAutor dori naji | 2012-05-07

3 Comentarios

  1. 6

    En el controlador

    public function init()
    {
    $messages = $this->_helper->flashMessenger->getMessages();
    if(!empty($messages))
    $this->_helper->layout->getView()->message = $messages[0];
    }

    en su diseño.phtml

        <!-- Global notification handling to use call flashMessenger action helper -->
        <?php if(isset($this->message)) :?>
        <div class="notification">
    
        <?php echo $this->message ;?>
    
        </div>    
     <?php endif;?>

    Entonces, cada vez que quiero usarlo

    public function loginAction()
    {
    $this->_helper->flashMessenger('Login is success');
    $this->_helper->redirector('home');
    }

    Casi cada vez que se redireccionar después de usar flashMessenger.

    • Esto sólo se obtiene un mensaje de flash en un momento..no se pueden repetir
    • Yo nunca encuentro ninguna necesidad de más de un mensaje .
    • esto funcionó bien por ahora, Pero tengo una pregunta ¿por qué el auto completo en net beans no mostrar el auto completo cuando estoy usando la _helper y ¿cómo puedo hacer para hacerlo ??
    • Puesto ayudante utiliza php magia de la función __llame por lo tanto no es posible determinar el nombre de los auxiliares .Pero Zend Studio (IDE) revelan que el auto completo para los ayudantes desde su cuenta de ZF estructura . Es una de las características importantes para que yo uso Zend Studio mí mismo.
  2. 2

    Cómo utilizar el flash mensajero en Zend
    suponga que tiene una acción llamada ‘foo’

    public function fooAction(){
    
     $flashMessenger = $this->_helper->getHelper('FlashMessenger');
     //some codes
     $flashMessenger->addMessage(array('error' => 'This is an error message'));
    $this->_redirect('/someothercontroller/bar');
    
    }
    //someothercontroller/barAction
    public function barAction(){
    
    $flashMessenger = $this->_helper->getHelper('FlashMessenger');
     $this->view->flashmsgs = $flashMessenger->getMessages();  //pass it to view 
    
    }

    En su opinión, parte

    <?php if(isset($this->flashmsgs)) { ?>
                     <?php foreach($this->flashmsgs as $msg){ 
                           foreach ($msg as $key=>$diserrors) {
                            if($key=="error"){?>
          //do wat you want with your message
    <?php } } }?>
  3. 0

    Esto debería funcionar dentro de un Controlador de

    /**
     * @var Zend_Controller_Action_Helper_FlashMessenger
     */
    protected $flashMessenger = null;
    
    
    /**
     * initalize flash messenger
     *
     * @return void
     */
    public function init() 
    {
        $this->flashMessenger = $this->_helper->FlashMessenger;
    }
    
    /**
     * Action wich is redirectin.. and sets message
     *
     * @return void
     */
    public function actiononeAction()
    {
        $this->flashMessenger->addMessage('FLY HiGH BiRD!');
        $this->_redirect('/whatever/url/in/your/project');
    }
    
    /**
     * display messages from messenger
     * 
     * @return void
     */
    public function displayAction()
    {
        $myMessages = $this->flashMessenger->getMessages();
        $this->view->messages = $myMessages;
    }
    • Los controladores realmente no debería mantener el estado; por lo tanto, la creación de variables para ellos no es una buena práctica. En su lugar, utilice simplemente $this->_helper->flashMessenger, o si se aburre de escribir a puño, asignar por acción como $flashMessenger = $this->_helper->flashMessenger. Utilizar el objeto request para el estado en una petición si usted no está usando un modelo.

Dejar respuesta

Please enter your comment!
Please enter your name here