Пример Symfony2 JSON

Я пытаюсь настроить json-пример, используя symfony2.
Я создал тестовый комплект, тестовый объект ( "Сообщение" ), настроил orm и т.д.
Сообщение (таблица) имеет следующие столбцы: идентификатор, заголовок, текст
Я пытаюсь открыть маршрут */mydomain/message, который будет выставлять json-интерфейс для таблицы сообщений (небольшой список)

Первая методология, которую я пробовал, заключалась в следующем:

Создайте класс MessageController, который использует Symfony\Component\HttpFoundation\Response и имеет такую ​​функцию:

public function testAction() {  
    $response = new Response(json_encode(**code_req_here**));  
    return $response;  
}

и установите маршрут следующим образом:

test:  
    pattern: /test  
    defaults: { _controller: myProjectmyTestBundle:Message:test, _format: json}  
    requirements: { _format: (xml|json), _method: GET }  
  • Это правильная методология?
  • Что я надену на code_req_here?

Вторая методология, которую я пробовал, была с помощью FOS/RestBundle, но мне не удалось правильно выполнить руководство, так что

  • предоставьте небольшой справочник о том, как это сделать (просто) с помощью FOS/RestBundle

Ответы

Ответ 1

- это правильная методология?

Да мне это нравится, но я бы немного изменил правило маршрутизации:

test:
    pattern: /test.{_format}
    defaults: { _controller: myProjectmyTestBundle:Message:test, _format: json}
    requirements: { _format: (xml|json), _method: GET }

что я надену на code_req_here?

Поместите массив, который вы хотите преобразовать в формат json. ех. array ('id' = > 1, 'value' = > 'test'), array ('id' = > 2, 'value' = > 'smart'))

Ответ 2

Я рекомендую использовать

http://jmsyst.com/bundles/JMSSerializerBundle

$serializer = $container->get('jms_serializer');
$serializer->serialize($data, 'json'); // json|xml|yml
$data = $serializer->deserialize($inputStr, $typeName, $format);