我正在使用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。
应该使用LINK
请求将项目添加到现有集合中,而不是用POST
请求覆盖它。
使用symfony表单,您可以将User
(id)加上隐藏的_method
值LINK
张贴到/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版开始可用)。
可以在文档章节中找到更多信息: