symfony2 CSRF无效

symfony2 CSRF无效,symfony,csrf,Symfony,Csrf,好的,今天我用我们“实时”数据库中的新信息更新了我的数据库。。。从那以后,我的一张表格出现了问题。如果你需要任何代码让我知道,我会编辑这个,并张贴所需的代码 我有一个报表,它有一个日期范围字段和一个代理部门的下拉列表。当我第一次访问页面时,我在表单的开头看到: CSRF令牌无效。请尝试重新提交表单 因此,我转到另一个具有相同类型信息的表单,并检查_标记,结果如下: <input type="hidden" id="ecs_crmbundle_TimeClockReportType__tok

好的,今天我用我们“实时”数据库中的新信息更新了我的数据库。。。从那以后,我的一张表格出现了问题。如果你需要任何代码让我知道,我会编辑这个,并张贴所需的代码

我有一个报表,它有一个日期范围字段和一个代理部门的下拉列表。当我第一次访问页面时,我在表单的开头看到:

CSRF令牌无效。请尝试重新提交表单

因此,我转到另一个具有相同类型信息的表单,并检查_标记,结果如下:

<input type="hidden" id="ecs_crmbundle_TimeClockReportType__token" name="ecs_crmbundle_TimeClockReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />
<input type="hidden" id="ecs_crmbundle_SimpleSalesReportType__token" name="ecs_crmbundle_SimpleSalesReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />

第一个是显示错误的,SimpleSalesReport不。。。你知道为什么会这样做,或者我如何修复它吗


谢谢..

您是否在操作中偶然使用了$form->bindRequest(),从而产生了CSRF错误?我有这个问题。您不应该绑定新表单的请求。如果要将表单发布到同一操作,请将bindRequest包装在条件中,以检查方法是否为POST:

if ($this->getRequest()->getMethod() == 'POST') {
  $form->bindRequest($this->getRequest());
  if ($form->isValid()) {
    ...
  }
}

这个错误让我疯狂了好几天! 谢谢奎师那! 如果在表单模板中选择不使用默认表单行为
{{form_widget(form)}
则应将
{{form_rest(form)}}

希望这能帮助其他人

使用
{{form\u widget(form)}}
构建自定义表单没有问题。 您只需添加
\u令牌
,如下所示:
{{form\u widget(form.\u token)}

这个人是个怪胎天才!那正是我在做的。。。但是你来了,拯救了这一天!另外,记住在底部添加form_rest(form),作为表单中的最后一个字段。Symfony负责为您插入带有该语句的CSRF令牌@奎师那正是我所缺少的;草率地复制/粘贴到我的部分!你太棒了!谢谢你也解决了我的问题。也可以使用
$this->getRequest()->isMethod('POST')