установить тип контента в JSON в Symfony - PullRequest
9 голосов
/ 26 октября 2010

Я использую symfony 1.4, чтобы создать свой проект с propel в качестве ORM. Я хочу получить ответ в формате JSON, когда я вызываю URL. Я установил заголовки в «application / json», но он не работает, я получаю ответ обратно в формате HTML, который не могу декодировать Как мы можем установить тип контента в Symfony ?? пример кода: Действие-

 public function executeIndex(sfWebRequest $request)
 {
     $data_array=array("name" => "harry", "mobile" => "9876543210");
     $data_json=json_encode($data_array);
     $this->output=$data_json;  
 }

Просмотр-

<?php
  header('Content-type: application/json');
  echo $output;
?>

Ответы [ 4 ]

20 голосов
/ 26 октября 2010

хорошо, я понял, в чем дело ... код должен был быть .. Action-

public function executeIndex(sfWebRequest $request)
{
 $this->getResponse()->setContentType('application/json');
 $data_array=array("name" => "harry", "mobile" => "9876543210");
 $data_json=json_encode($data_array);
 return $this->renderText($data_json); 
}

этот код работал для меня, пожалуйста, напишите, если есть лучшее решение, которое вы получили ..

6 голосов
/ 26 мая 2011

Вы также можете определить это в файле view.yml (apps / {app_name} / modules / {module_name} /config/view.yml) для модуля.

indexSuccess:
  has_layout: false
  http_metas:
    content-type: application/json
2 голосов
/ 19 октября 2012

Ой!В качестве альтернативы я бы просто сказал, что я использую систему маршрутизации, которая обеспечивает довольно удобный способ сделать это:

-> В вашем файле routing.yml

json_test:
  url: /test
  class: sfRequestRoute
  param: { module: test, action: index, sf_format: json }

Затем фреймворки автоматически подберут вам представление index.json.php, которое вы должны создать.Как упомянуто выше, вы можете сгенерировать содержимое в действии с помощью json_encode, хотя есть аргументы для его отображения в представлении.

Теперь ... Хорошо, если вы хотите больше узнать об этом,взгляните на учебное пособие «Практическая симфония»: День 15: Веб-сервисы Там есть кое-что хорошее!

1 голос
/ 21 июня 2011

В стиле REST просто добавьте .format к URI, создайте соответствующий шаблон, и система маршрутизации Symfony сделает всю остальную работу за нас.

...