Network: Needish · clandescuento · Willka Travel & Adventures
// you’re reading...

Respuestas automáticas en formato JSON para CakePHP

En este tiempo de API’s, extensibilidad y otros, resulta util poder disponer de una forma fácil de devolver información en un formato diferente al tradicional HTML. Por suerte con CakePHP hacer esto es muy facil.

Lo que les dejo es una forma de generar, automáticamente, respuestas en formato JSON, utiles para el desarrollo de aplicaciones AJAX, pero es facilmente modificable para considerar otros formatos de respuesta. Los pasos son los siguientes:

  1. Hacer que CakePHP considere la extensión json y la maneje adecuadamente: (config/routes.php)
    Router::parseExtensions('json');

    Crear un layout para todas las peticiones en formato JSON: (views/layout/json/default.ctp)

    < ?php
    	header("Pragma: no-cache");
    	header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
    	header('Content-Type: text/x-json');
    	header("X-JSON: ".$content_for_layout);
    
    	echo $content_for_layout;
    ?>
  2. Crear una vista para todas las respuestas en formato JSON: (views/common/json.ctp)
    < ?php
    	echo $javascript->object($this->viewVars);
    ?>
  3. De modo de no tener que definir en cada acción la vista que se debe utilizar podemos modificar AppController: (app_controller.php)
    function afterFilter(){
    
    	if ($this->params['url']['ext']=='json'){
    		$_view = ROOT . DS . APP_DIR . DS . "views" . DS . "common" . DS . "json.ctp";
    		Configure::write("debug",0);
    		$this->autoRender=false;
    		$this->render(null,"default",$_view);
    
    	}
    }

Hecho esto todas las peticiones que sean .json automáticamente serán devueltas como json, con todos los datos que se hayan pasado a la vista a traves de Controller::set();

Espero le sea de utilidad a alguien más, comentarios se aceptan.

Comments

6 comments for “Respuestas automáticas en formato JSON para CakePHP”

  1. Esta bueno, publícalo en bakers.bligoo.com

    Posted by Dani | March 17, 2008, 11:52
  2. Cuánto hace que no toco Cake… en semana Santa me echo una aplicación :P

    Posted by Diego | March 17, 2008, 11:56
  3. @Diego: Por ahi, te podrías reescribir keegy! je :D

    Posted by pviojo | March 17, 2008, 12:12
  4. @dani: Bienvenido por estos lados. Ya está publicado!

    Posted by pviojo | March 17, 2008, 12:27
  5. Hey! gracias por este post.

    Sin embargo, estoy teniendo problemas siguiendolo, cake me renderea toda la pagina y abajo el json… muy raro.

    Tienes idea de que puede ser?

    Posted by pedrof | May 15, 2008, 13:43
  6. @Pedro: lo desarrollé usando la versión de cakephp branch, no la beta que está en el sitio, por lo que puede ser que no te funcione bien si usas esta versión. En cualquier caso en unos días, dependiendo de la próxima versión de cake que se libere, le voy a dar una revisión.

    Posted by pviojo | May 15, 2008, 23:23

Post a comment

Mi nombre es Pablo Viojo y tengo 27 años. Nací en Uruguay el 7 de agosto de 1981. Actualmente vivo en Santiago, Chile
Aparte de esto me interesa todo lo que tenga que ver con Internet y las nuevas tecnologías. Más info aquí, en mi hCard o en formato FOAF

View Pablo Viojo's profile on LinkedIn

Featured Posts

Romper paradigmas
February 23, 2009

A veces es necesario romper paradigmas…
¿Por qué la vista, o un elemento de la vista, no puede comunicarse con el modelo?
Paradigma: Un paradigma es —desde fines de la década de 1960— un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico. El concepto fue originalmente específico de la gramática; en 1900 el diccionario [...]

Reedición: Microformatos, los bloques de la web semántica
November 18, 2008

¿Que son los microformatos?
Se trata de formatos de marcado XHTML, aplicables en contextos particulares, que utilizan los atributos definidos por los estándares para mejorar la semántica de los documentos. Son una herramienta muy util para aquellas estructuras que se repiten frecuentemente en documentos, ya sea que se trate de documentos creados por una persona, por [...]

La importancia del Undo en las Web Applications
November 11, 2008

Tomado de Needish the Blog, con permiso del autor
Robert O’Callahan, en su artículo The Essence Of Web Applications, resume algunos aspectos de las aplicaciones web y su relación con las aplicaciones de escritorio.
En lo personal no estoy muy de acuerdo con lo que opina, sobre todo cuando menciona aspectos relacionados con los elementos [...]

La importancia de las interfaces en los nuevos modelos de interacción web
May 14, 2006

Últimamente este blog ha tenido bastante poco movimiento, fundamentalmente debido a falta de tiempo por parte de quien escribe por estos lados.
Si bien tengo unos cuantos temas que me gustaría tocar, fundamentalmente porque en los últimos meses me ha tocado entrar en un área bastante nueva de la programación para la web (sí, esa, la [...]

Suscribe

Enter your email address: