Я использую FOSRestBundle в Symfony2 для предоставления REST-сервиса.
В настоящее время мой контроллер возвращает объект при запросе ресурса (например, /users/40
). Интерфейс содержит форму, которая позволяет манипулировать этим ресурсом и отправляет его обратно с помощью PUT. Контроллер использует форму для обработки данных.
Моя проблема в том, что в форме меньше полей, чем во всей сущности (хорошими примерами являются id
и password_hash
). Я пришел к выводу, что отправлять клиенту всю сущность — плохая идея. Вместо этого я хочу, чтобы FOSRestBundle отправлял только те поля сущности, которые доступны в форме.
Итак, я только что попробовал:
return $this->createForm(UserType::class, $entity);
Структура JSON, возвращаемая FOSRestBundle с сервера, выглядит очень хорошо. Но, к сожалению, он не содержит значений.
Конечно, нет - форма не привязана. И на данный момент нет смысла привязывать данные. Следовательно, мне нужно найти другое решение.
Этот вариант использования будет очень распространенным в моих приложениях. Поэтому мне интересно, не было ли простого/стандартного способа добиться этого.
(P.S. Я использую Angular JS во внешнем интерфейсе. Я просто присоединяю объектный ресурс JSON к области и использую шаблоны форм symfony для создания полей формы, которые автоматически привязываются к правильному объекту области)