zend framework - tutorial - ¿Cómo desactivar el diseño y ver el renderizador en ZF2?
zend framework download (3)
¿Cómo puedo desactivar el diseño y ver el renderizador en Zend Framework 2.x? Leo la documentación y no puedo encontrar ninguna respuesta buscando en Google. Encontré respuesta a Zend 1.x y es
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
Pero ya no funciona en Zend Framework 2.x. Necesito deshabilitar tanto el renderizador como el diseño para solicitudes Ajax.
Cualquier ayuda sería genial.
Puede agregar esto al final de su acción:
return $this->getResponse();
Simplemente use setTerminal(true)
en su controlador para deshabilitar el diseño.
Este comportamiento se documenta aquí: Vista rápida de Zend View :: Cómo lidiar con los diseños
Ejemplo:
<?php
namespace YourApp/Controller;
use Zend/View/Model/ViewModel;
class FooController extends AbstractActionController
{
public function fooAction()
{
$viewModel = new ViewModel();
$viewModel->setVariables(array(''key'' => ''value''))
->setTerminal(true);
return $viewModel;
}
}
Si desea enviar una respuesta JSON en lugar de procesar un archivo .phtml, intente utilizar JsonRenderer:
Agregue esta línea a la parte superior de la clase:
use Zend/View/Model/JsonModel;
y aquí un ejemplo de acción que devuelve JSON:
public function jsonAction()
{
$data = [''Foo'' => ''Bar'', ''Baz'' => ''Test''];
return new JsonModel($data);
}
EDITAR:
No olvide agregar ViewJsonStrategy
a su archivo module.config.php
para permitir que los controladores devuelvan JSON. Gracias @Remi!
''view_manager'' => [
''strategies'' => [
''ViewJsonStrategy''
],
],
Un poco más de información sobre la respuesta anterior ... Utilizo esto a menudo al generar dinámicamente diferentes tipos de archivos: json, xml, pdf, etc. Este es el ejemplo de la salida de un archivo XML.
// In the controller
$r = $this->getResponse();
$r->setContent(file_get_contents($filePath)); //
$r->getHeaders()->addHeaders(
array(''Content-Type''=>''application/xml; charset=utf-8''));
return $r;
La vista no se representa, y solo se envían el contenido y los encabezados especificados.