Symfony2 fosrestbundle返回实体字段中包含的形式



我正在使用symfony2中的fosrestbundle提供休息服务。

当前我的控制器在请求资源时返回实体(例如/users/40)。前端包含一个允许操纵此资源并使用put将其发送回去的表单。控制器使用表单处理数据。

我的问题是,该表格的字段少于整个实体(idpassword_hash是一个很好的示例)。我得出的结论是,将整个实体发送给客户是个坏主意。相反,我希望FosrestBundle仅发送可在表格中避免的实体字段。

所以我只是尝试了:

return $this->createForm(UserType::class, $entity);

fosrestbundle从服务器返回的JSON结构看起来很好。但不幸的是它不包含值。

当然不是 - 表单不绑定。在这一点上,绑定数据是没有意义的。因此,我需要找到另一个解决方案。

在我的应用程序中,此用例将非常普遍。所以我想知道是否没有简单/标准的方法来实现这一目标。

(p.s。我在前端中使用Angular JS。我只是将实体资源JSON附加到范围上,并使用Symfony form模板生成形式字段,该字段自动绑定到范围的正确对象)

定义应该从fos返回的内容的标准方法是使用序列化器组和Symfony Serialializer组件或JMS Serialializer。

在两种情况下,您都在实体属性上定义组:

// in the entity
use SymfonyComponentSerializerAnnotationGroups;
class Story
{
    /**
     * @Groups({"story"})
     *
     * @var int
     */
    private $id;

,然后:

 // in the controller
 * @RestView(serializerGroups={"story"})
 * @RestRoute("stories")
 *
 * @return Story[]
 */
public function getStoriesAction()

将返回您的对象或对象,其属性与控制器序列化器组相匹配。

最新更新