我有一个动作,需要 sfGuard 保护的 POST 数据。这意味着如果用户没有登录,POST 数据将被发送到登录表单。通常,这不是问题,用户继续登录,并且必须再次提交数据。
不幸的是,登录表单似乎正在使用 POST 数据,就好像它是与表单本身一起提交的。这意味着它抱怨缺少必需的用户名和密码字段,并且抱怨缺少 CSRF 令牌。最后一个问题在提交表单后并没有消失,这意味着用户无论如何都无法登录。
如果未登录,则不应向用户显示表单,但用户可能会在表单仍处于打开状态时注销。因此,我要求保持界面防水且无错误。
这是 sfGuard 的缺点,可以避免,还是我做错了什么?
为了澄清,路线如下所示:
add_subgroup:
url: /group/:id/add
class: sfPropelRoute
options:
model: Group
type: object
param: { module: subgroups, action: create }
requirements:
group_id: \d+
sf_method: [post]
用于提交请求的表格如下:
<form action="<?php echo url_for('add_subgroup', $group) ?>" method="post">
<input type="hidden" name="group_id" value="<?php echo $group->getId() ?>" />
<input type="text" name="subgroup_id" />
<input type="submit" class="button" value="Add" />
</form>