我在哪里放置$ this-> request->标头('Content-Type','application / json');

时间:2011-08-28 13:07:28

标签: php json kohana content-type kohana-3

我正在尝试将内容类型更改为Kohana中的application / json。我把它放在我的控制器中的一个动作中:

$this->request->headers('Content-Type', 'application/json');
$this->content = json_encode($json_data);

但请求仍然是text / html内容类型。

我应该在哪里放置$this->request->headers('Content-Type', 'application/json');

3 个答案:

答案 0 :(得分:10)

详细说明Claudio的答案,是的,你需要设置响应头,而不是请求,如此

$this->response->headers('Content-Type','application/json');

另外,我不确定你是如何实现控制器的,但看起来它可能是基于

的模板控制器
$this->content = json_encode($json_data);

如果您使用的是模板控制器,请确保将auto_render设置为FALSE。

最后,使用您的json数据

设置响应正文
$this->response->body(json_encode($json_data));

答案 1 :(得分:1)

好吧,您需要编辑响应标题。

http://kohanaframework.org/3.1/guide/api/Response#headers

答案 2 :(得分:1)

OP问到哪里放。如果您正在使用扩展Controller_Template的控制器,就像我一样,我只是将Andrew Schmid的代码示例添加到我的基本控制器的after()方法(在parent :: after()之前)并且它运行良好。

所以:

Controller_Your_Controller extends Controller_Template {

   // Your controller actions

   public function after()
   {
       // Set the response content-type here
       $this->response->headers('Content-Type','application/json');
       parent::after();
   }
}