Symfony2 Form Rest Api仅添加到Relation

时间:2014-07-07 17:45:03

标签: rest symfony symfony-forms

我使用Symfony2作为JS Frontend App的Rest Api。我遇到了一个场景,我希望用户“邀请”(=添加)用户到一个组。但我想只允许他们将用户添加到现有的Relation中,而不是“覆盖”整个关系,这是与常规Symfony2表单结合的标准行为。

实现此行为的最佳做法是什么?

其他评论:

我在前端使用Ember-Data,而我的前端可能会向整个群组发送一个推送请求,包括其他用户(但不是全部)。

我的JSON Payload看起来像这样:

{
    "usergroup": {
        "name":"yxcv2",
        "stake":"sdfghj",
        "imageName":null,
        "userCount":5,
        "users":[
            5,
            6,
            7
            ],
        "gameGroup":"13",
    }
}

在此方案中,用户1,2,3和4已经是该组的成员。而不是用5,6,7替换1,2,3,4,我想向现有成员添加5,6,7。

1 个答案:

答案 0 :(得分:0)

LINK 请求应该用于将项目添加到现有集合,而不是使用POST请求覆盖它。

使用symfony表单,您可以将User(id)以及值_method的隐藏字段LINK发布到类似/groups/{id}的内容。

路由将是这样的:

group_invite:
    path:     /groups/{id}
    defaults: { _controller: YourBundle:Group:inviteUser }
    methods:   [LINK]

你也可以使用FOSRestBundle的 implicit resource name definition

要使方法覆盖工作,配置设置framework.http_method_override需要设置为true(=默认值 - 自symfony版本2.3起可用)。

更多信息可在文档章节中找到:

<强> How to use HTTP Methods beyond GET and POST in Routes