如何使用Kohana 3.1中的“新响应”或“响应::工厂()”发送响应?

时间:2012-03-14 06:50:21

标签: php kohana kohana-3

我看到的例子暗示了这样的用法:

$response = new Response();
echo $response->body($view)->send_headers()->body();

但如果我有以下代码

$response = new Response();
$response->headers('Content-Type', 'application/json');
echo $response->body($view)->send_headers()->body();

它输出的输出是正确的,但它是HTML格式,而不是JSON。

那么发送新响应以及标题的有效方法是什么?我正在使用Kohana 3.1和php 5.3

编辑:

在你开始考虑我不使用$this->response->body(<blah here>);的傻瓜之前,让我澄清一下我知道如何使用控制器的响应对象......这不是我想要的......我想要的完全从函数调用堆栈中控制器附近的静态函数发送响应:)

2 个答案:

答案 0 :(得分:1)

对Kohana来说还是新手,但这就是我如何做到的,似乎工作正常:

$this->response->headers('Content-type','application/json; charset='.Kohana::$charset);
$this->response->body(json_encode( $data_array ));

我认为charset是可选的......希望这有帮助。

答案 1 :(得分:0)

好的,在抓了我的脑袋并尝试了许多解决方案后,我决定使用它:
Request::initial()->response()
->body($view)
->headers('Content-type','application/json');

除非您在流程中的某处写exit,否则可以在任何地方使用。