Пример 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);