基于每个动作呈现模板 - Kohana3.2

时间:2011-08-31 18:02:23

标签: php templates kohana kohana-3

我目前正在使用Kohana的默认模板系统。目前,我扩展了我的一个控制器Controller_Template_Default。使用它生成的输出对于我在此控制器中的大多数操作都是完美的,但是有些操作必须输出JSON,为此我需要一个空白页面,其上只输出JSON数据(因此没有模板)。

我尝试在没有$this->response->body($data);模板的情况下返回JSON数据,但它无效。

你有什么建议?我应该基于每个操作而不是每个控制器来渲染模板吗?我该怎么做呢?

3 个答案:

答案 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);