Я создаю API для проекта Symfony2 с использованием FOSRestBundle, и я часто просто возвращаю объекты Doctrine для кодирования в JSON. Обычно так:
/**
* @Rest\View()
*/
public function getEventsAction(Request $request)
{
// security checks
return $this->getDoctrine()->getRepository('SomeBundle:Event')->findAll();
}
Дело в том, что это возвращает все свойства объекта и отношения, и во многих случаях я не хочу этого, например, с объектом User, который содержит хешированный пароль и все.
Есть ли способ настроить автоматические фильтры при кодировании объектов Doctrine в JSON? Или мне нужно создать QueryBuilder только для извлечения необходимых данных?
Я настоятельно рекомендую использовать JMSSerializerBundle, это даст вам столько вариантов, сколько вам нужно. После того, как вы включили его в свой проект, вы можете настроить свои объекты так, чтобы сериализировать только определенные свойства. Есть довольно много способов сделать это, вы можете увидеть все разные способы в стратегии исключения часть документации.
Вы можете исключить конкретные свойства и многое другое. Взглянуть.
Кроме того, взгляните на мой другой ответ немного больше информации о том, как использовать его с FOSRestBundle
Других решений пока нет …