2011-07-03 16 views
5

Tengo un método de controlador que durante mucho tiempo ha estado manejando las solicitudes JSON al analizar esa extensión, pero ahora tengo que abrirlo para cruzar el dominio ajax, así que me gustaría ofrecer una variante JSONP al analizar ese extensión también. Ya he actualizado mi routes.php archivo:CakePHP, extensiones y diseños

Router::parseExtensions('json', 'jsonp'); 

Hasta ahora todo está bien, pero la felicidad termina cuando los resultados son prestados. Mientras que la extensión .json elige automágicamente el diseño json/default.ctp, el contenido .jsonp continúa adoptando el diseño predeterminado no específico (y todo su contenido HTML innecesario). Intenté usar RequestHandler::setContent() para establecer el tipo de contenido de respuesta en json y js, pero eso no parece ser lo que desencadena la llamada a un directorio de diseño determinado.

¿Alguien sabe qué determina qué directorio de diseño específico del contenido se llama? Intenté crear jsonp/default.ctp y traté de crear un diseño js/default.ctp con mi resultado JSONP, pero parece que nada parece funcionar. Acabo de obtener el valor predeterminado normal.

Cualquier información sobre cómo se asignan las extensiones/el tipo de contenido a estos directorios de diseño sería muy apreciada.

Respuesta

1

he resuelto temporalmente esta estableciendo explícitamente el valor layoutPath:

$this->layoutPath = $params['url']['ext']; 

Esto se siente como una de esas cosas que tiene que haber una solución mejor, pero tal vez eso es todo. Voy a dejar la pregunta abierta por un tiempo con la esperanza de que alguien más tenga una solución que involucre a Cake's automagic.