2011-08-31 22 views
0

我目前使用的是Kohana的默认模板系统。目前,我扩展了我的一个控制器Controller_Template_Default。由此生成的输出对于此控制器中的大部分操作都是完美的,但是某些操作必须输出JSON,为此我需要一个空白页面,仅输出JSON数据(因此不需要模板)。以每个动作为基础呈现模板 - Kohana3.2

我试图返回没有模板的JSON数据与$this->response->body($data);,但它没有奏效。

您的建议是什么?我应该以每个操作为基础而不是按控制器来呈现模板?我该如何解决这个问题?

回答

0

您应该使用json_encode和JSON响应提供一个Content-Type头:

$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/

1

在之前的例程或所有“json”操作中,输入以下句子 this-> auto_render = false; 随着auto_render设置为false,Kohana中不会尝试应用模板

0

使用

echo json_encode($data); 
die(); 

该脚本将停止die();后执行,你将有只有json_encode($data);打印