Вопрос
Я пытаюсь настроить пример 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
Решение
правильная ли это методология?
Да, мне это нравится, но я бы немного изменил правило маршрутизации следующим образом:
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'), массив('id' => 2, 'value' => 'smart'))
Другие советы
Я рекомендую использовать
http://jmsyst.com/bundles/JMSSerializerBundle
$serializer = $container->get('jms_serializer');
$serializer->serialize($data, 'json'); // json|xml|yml
$data = $serializer->deserialize($inputStr, $typeName, $format);