2010-09-27 7 views
6

Problema: algunas veces en nuestro controlador zend no queremos que la secuencia de comandos se emita directamente, sino que más bien queremos el contenido de esa secuencia de comandos. Un ejemplo: cuando necesitamos el resultado, la salida html de un guión de vista se incluye en otra estructura como JSON o XML para el procesamiento en el lado del cliente.Cómo capturar una salida de vista Zend en lugar de realmente emitirla

Encontré el resultado aquí en el desbordamiento de pila, pero no tan rápido ya que estaba en un contexto diferente. He estado luchando con esto durante 2 días. Resultó que era muy simple:

// in our controllers' action method 
    $this->_helper->layout()->setLayout('empty'); // disable layout 
    $this->_helper->viewRenderer->setNoRender(true); // make sure the script is not being rendered 

    // any of your code here 
    $html = $this->view->render('projects/climate.phtml'); // return the view script content as a string 
    $json = array('html'=>$html, 'initData'=>'my other needed data'); 
    echo json_encode($json); 

Espero que esto haya sido claro y sea útil para alguien.

+1

Hola eslava. Puede compartir sus conocimientos aquí, pero este es un sitio de preguntas y respuestas. Debe publicarlo como un comentario o respuesta a la pregunta original. – takeshin

+0

Eso es lo que haré. – Slavic

Respuesta

9

Trate de usar

public myAction() { 
    $this->_helper->json(array(
     'html' => $this->view->render('projects/climate.phtml'), 
     'initData'=> 'my other needed data', 
    )); 
} 

El ayudante de acción JSON normalmente

  • desactivar la viewRenderer
  • deshabilitar el diseño
  • json_encode la matriz
+0

Tanques Julien! Tu versión es un poco más delgada. – Slavic

Cuestiones relacionadas