Symfony2 Form Rest Api仅添加到关系

问题描述 投票:0回答:1

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

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

附加说明:

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

我的JSON有效负载如下所示:

{
    "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。

rest symfony symfony-forms
1个回答
0
投票

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

使用symfony表单,您可以将User (id)加上隐藏的_methodLINK张贴到/groups/{id}

路由将是这样的:

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

您也可以使用FOSRestBundle的隐式资源名称定义

为了使方法覆盖生效,配置设置framework.http_method_override必须将http_method_override设置为true (=默认值-自symfony 2.3版开始可用)。

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

如何在路由中使用GET和POST以外的HTTP方法

© www.soinside.com 2019 - 2024. All rights reserved.