Una estrategia de impresión (rendering strategy) determina como la página será
mostrada en el navegador web. Por defecto, para producir una página HTML la
plantilla de vista .phtml se imprime con la ayuda de la clase PhpRenderer
que está en el namespace Zend\View\Renderer
. Esta estrategia es útil en el
99% de los casos. Pero algunas veces necesitamos regresar algo más, por ejemplo,
una respuesta JSON o una respuesta RSS.
Una respuesta en formato JSON se regresa generalmente cuando implementamos algún tipo de API (Interfaz de Programación de Aplicaciones). Una API es usada para recuperar algún tipo de datos en un formato legible por la maquina. Una respuesta en formato RSS es generalmente usada para publicar información que cambia frecuentemente como noticias y publicaciones de un blog.
Así, ZF3 provee tres estrategias para imprimir vistas listas para usar:
PhpRenderingStrategy
).JsonStrategy
que produce una respuesta JSON.FeedStrategy
que produce un respuesta RSS.Por ejemplo, vamos a mostrar como usar la JsonStrategy
para regresar una respuesta
JSON desde la acción en el controlador.
Primero, necesitaremos registrar la estrategia en el archivo de configuración module.config.php:
<?php
return [
//...
'view_manager' => [
//...
'strategies' => [
'ViewJsonStrategy',
],
],
];
Luego regresamos JsonModel
(en lugar de ViewModel
usual) desde nuestro método
de acción del controlador:
namespace Application\Controller;
use Zend\Mvc\Controller\ActionController;
use Zend\View\Model\JsonModel;
class IndexController extends ActionController
{
public function getJsonAction()
{
return new JsonModel([
'status' => 'SUCCESS',
'message'=>'Here is your data',
'data' => [
'full_name' => 'John Doe',
'address' => '51 Middle st.'
]
]);
}
}
Si abrimos esta página en nuestro navegador veremos la respuesta JSON:
{'status':'SUCCESS', 'message':'Here is your data', 'data':{'full_name:'John Doe', 'address':'51 Middle st.'}}