我目前正在使用Kohana的默认模板系统。目前,我扩展了我的一个控制器Controller_Template_Default
。使用它生成的输出对于我在此控制器中的大多数操作都是完美的,但是有些操作必须输出JSON,为此我需要一个空白页面,其上只输出JSON数据(因此没有模板)。
我尝试在没有$this->response->body($data);
模板的情况下返回JSON数据,但它无效。
你有什么建议?我应该基于每个操作而不是每个控制器来渲染模板吗?我该怎么做呢?
答案 0 :(得分:1)
在前例程或所有“json”动作中放入以下句子 this-> auto_render = false; 将auto_render设置为false,Kohana将不会尝试应用模板
答案 1 :(得分:0)
您应该使用json_encode并为JSON响应提供内容类型标头:
$this->response->headers('Content-Type', 'application/json');
$this->response->body(json_encode($data));
此外,我在after()
方法中渲染模板,每个动作在全局模板中都有自己的内容模板。但是为了能够在JSON和HTML之间轻松切换,我发现使用Kostache模块将逻辑与实际模板分开会更好:https://github.com/zombor/KOstache
阅读本文,了解如何使用Kohana提供不同的格式(JSON,HTML等):http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
答案 2 :(得分:0)
使用
echo json_encode($data);
die();
脚本将在die();
之后停止执行,您将只打印json_encode($data);