A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

4.17. Estrategias para Imprimir Vistas

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:

4.17.1. Regresar una Respuesta JSON

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.'}}

Top