Длина содержимого: 0 в ответе json Symfony2 - PullRequest
4 голосов
/ 19 декабря 2011

Всегда я получаю пробел, у меня в контроллере есть действие, подобное этому

/**
 * @Route("/check/{key}.json", defaults={"_format"="json"})
 * @Template()
 */
public function processAction($upload_key)
{
  /* make thing */
  return array('data' => $process_data);
}

в моем файле process.json.twig

{% set res = { 'data': data } %}
{{ res | json_enconde | raw }}

другая форма

{{ { 'data': data } | json_enconde | raw }}

я тоже попробовал:

{{ 'hello' | json_encode | raw }}

в хроме я получаю этот ответ:

Connection:close
Content-Length:0
Content-Type:application/json
Date:Mon, 19 Dec 2011 05:13:17 GMT
Server:Apache/2.2.20 (Ubuntu)
X-Powered-By:PHP/5.3.6-13ubuntu3.3

и ничего с сервера не получить, я не могу решить это

1 Ответ

5 голосов
/ 19 декабря 2011

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

Вариант A - действие, которое возвращает толькоJSON

Вы можете полностью обойти шаблон.

В вашем контроллере удалите аннотацию @Template и вместо нее return new Response(json_encode($process_data));

Опция B - Anдействие, которое поддерживает различные форматы ИЛИ вы просто хотите отобразить JSON в шаблоне

Под действием, которое отображает различные форматы, я ссылаюсь на действие с маршрутом следующим образом:

@Route("/check/{key}.{_format}", defaults={"_format"="json"}
@Template

Хотя контроллер в этом вопросе идет по пути «действия, которое поддерживает только JSON, но вы хотите отобразить его в шаблоне».

Предполагая, что контроллер processAction возвращает return array('data' => $process_data); в качестве вопросапросит затем сделать рендеринг в виде JSON внутри шаблона с именем process.json.twig следующим образом {{ data|json_encode }}, нет необходимости предварительно обрабатывать data или превратить его в другой массив или что-то подобноеIde шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...