我在Symfony有一个人和组的应用程序,其中一个人可能有多个组的成员资格。要从组中删除一个人,我当前在'groupMembers‘模块中有一个操作,该模块采用'delete’方法并从多对多实体' group _membership‘中删除该对。当前的路由如下所示:
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对其进行了限制:
remove:
is_secure: true因此,在单击“删除”链接后,未登录的用户将进入登录屏幕,但在单击“提交”后,请求不再是“删除”而是“获取”,这意味着将调用类似的add_to_group路由!
add_to_group:
url: /group-membership/:group_id/:person_id
param: { module: groupMembers, action: create }
...有没有办法让sfGuard模拟删除操作并正确地传递参数,或者我必须使用不同的路由?
发布于 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请求的操作的重定向,但我强烈建议您更改路由方案。
https://stackoverflow.com/questions/6858557
复制相似问题