首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过sfGuard传递Delete方法

通过sfGuard传递Delete方法
EN

Stack Overflow用户
提问于 2011-07-28 19:57:33
回答 1查看 288关注 0票数 1

我在Symfony有一个人和组的应用程序,其中一个人可能有多个组的成员资格。要从组中删除一个人,我当前在'groupMembers‘模块中有一个操作,该模块采用'delete’方法并从多对多实体' group _membership‘中删除该对。当前的路由如下所示:

代码语言:javascript
复制
remove_membership:
  url:      /group-membership/:group_id/:person_id
  class:    sfPropelRoute
  options:  { model: GroupMembership, type: object }
  param:    { module: groupMembers, action: remove }
  requirements:
    sf_method: [delete]

要执行此操作,用户需要登录,因此我在模块的security.yml中使用sfGuard对其进行了限制:

代码语言:javascript
复制
remove:
  is_secure: true

因此,在单击“删除”链接后,未登录的用户将进入登录屏幕,但在单击“提交”后,请求不再是“删除”而是“获取”,这意味着将调用类似的add_to_group路由!

代码语言:javascript
复制
add_to_group:
  url:    /group-membership/:group_id/:person_id
  param:  { module: groupMembers, action: create }
  ...

有没有办法让sfGuard模拟删除操作并正确地传递参数,或者我必须使用不同的路由?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-28 22:20:38

看来,如果不编写自定义代码或编辑sfGuard插件的代码,就无法实现这一点。

有关详细信息,请参阅plugins/sfGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php (其executeSignin方法)如何处理登录。

sfGuard获取用户引用并使用appropriate method of sfAction执行重定向。该重定向通过使用http报头Location来执行。因此浏览器将使用GET方法来接收url内容。

您可以覆盖默认的signin操作,并执行从remove_membership路由到将使用sfBrowser组件模拟POST请求的操作的重定向,但我强烈建议您更改路由方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6858557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档