Última encuesta

Sobre qué temas quieres leer en Bakers?


Encuestas anteriores

Contenidos más leídos

Lo más leído escrito desde 22-07-2008

No hay artículos en el período seleccionado.

Comentarios recientes

Respuestas automáticas en formato JSON para CakePHP

Enviado por Pablo Viojo el 17/03/2008 a las 12:26 PM

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.

Etiquetas:

No me esta funcionando

Enviado por krusty999 el 16/04/2008 a las 10:10 AM

Hola man, estoy probando tu código. Pero no logri hacerlo funcionar, simpre me pide que tenga la vista en la subcarpeta 'json'. Tal vez podrias extender un poco más la explicación especialmente el app_controller.php. Saldudos.

 PD: Hace como media hora que estoy esperando el mail para poder registrarme, pero no llega, habrá algin problema con yahoo.com???


Normal que no te funcione

Enviado por david b. el 31/05/2008 a las 06:51 AM

Es lo que tiene cuando plagias un artículo y te dejas parte, yo lo he conseguido hacer funcionar a partir del artículo original http://www.pagebakers.nl/2007/06/05/using-json-in-cakephp-12/


No veo el plagio

Enviado por el 24/06/2008 a las 10:05 AM
Victor San Martin

No el plagio que tu comentas, la forma de hacerlo que explica Pablo es distinta a la que aparece en la url que mencionas.

Si bien la parte de activar el parseo de la extension es identica, pero hay pasos que vienen despues que son distintos, ahora ademas como quieres que no asemejen bastante si cuentan con las mismas herramientas (cake ...).

Además te puedo hacer una lista de mas de 10 artículos en donde explican como devolver datos en formato JSON y todos son similares... me imagino que si los ves pensarás que  todos se plagiaron entre sí y nadie dio créditos.

Saludos







Suscribirse a los comentarios de este artículo en RSS

Personas en línea

En estos momentos hay 1 personas visitando "comunidad cakePHP LatinoAmérica"

Inscríbete

Inscríbete aquí para escribir en este sitio