Куда мне поместить $ this-> request-> headers ('Content-Type', 'application / json'); - PullRequest
2 голосов
/ 28 августа 2011

Я пытаюсь изменить тип контента на application / json в Kohana.Я поместил это в действие в моем контроллере:

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

Однако в запросе по-прежнему есть текстовый / html-тип содержимого.

Куда мне положить $this->request->headers('Content-Type', 'application/json');?

Ответы [ 3 ]

10 голосов
/ 20 сентября 2011

Чтобы уточнить ответ Клаудио, да, вам нужно установить заголовок ответа, а не запрос, например, так:

$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 голос
/ 23 февраля 2013

ОП спросила, где его поставить. Если вы используете контроллер, который расширяет Controller_Template, как и я, я просто добавил пример кода Эндрю Шмида в метод 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();
   }
}
1 голос
/ 28 августа 2011

Ну, вам нужно отредактировать заголовок ответа .

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

...