Symfony CSRF令牌丢失

Symfony CSRF令牌丢失,symfony,twig,Symfony,Twig,这让我发疯 以这些代码片段为例 class CommonController extends Controller { /** * Create delete form * * @param int $id * * @return Form */ protected function createDeleteForm($id) { return $this->createFormBuilde

这让我发疯

以这些代码片段为例

class CommonController extends Controller
{
    /**
     * Create delete form
     *
     * @param int $id
     *
     * @return Form
     */
    protected function createDeleteForm($id)
    {
        return $this->createFormBuilder(['id' => $id])
            ->add('id', \Symfony\Component\Form\Extension\Core\Type\HiddenType::class)
            ->getForm()
        ;
    }
}

{%如果定义了删除路径%}
{{form_小部件(deleteForm)}
{{删除表格{提交按钮}
{%endif%}
请注意,这不是伪代码,而是我在一个应用程序中发现的真实代码,我的一个朋友让我修复

我的问题是。。。为什么视图中不显示CSRF令牌?
因此,由于csrf令牌丢失,我的表单提交始终无效

更多细节
  • Symfony版本:2.8
  • 即使我使用了
    form\u rest
    标记,它仍然不在那里,所以看起来好像根本没有生成,但在引擎盖下,它应该在那里(
    isValid()
编辑
  • 如果我转储
    删除表单
    \u令牌
    存在,但如果我尝试使用
    表单小部件
    表单行
    表单rest
    则不会显示
  • 如果我不使用
    form\u小部件(deleteForm)
    form\u行(deleteForm.id)
    ,则会显示中的令牌

  • {form_widget(deleteForm._token)}
    怎么样?@PawełMikołajczuk:不,这不会产生任何东西,这是
    配置.yml
    中设置的
    csrf.protection
    和其他表单上正确呈现的csrf令牌?非常奇怪的是,
    form\u小部件(deleteForm.\u令牌)
    form\u行(deleteForm.\u令牌)
    没有产生任何结果,我在2.8项目上尝试了你的代码,效果很好。你能提供更多的模板代码吗?也可能是表单处理。@chalasr是的,其他表单按预期工作。今晚或明天我会提供更多的代码,但我对symfony很有经验,我不会做任何奇怪或“黑客”的事情@DonCallisto我对此毫无疑问。有些东西破坏了令牌呈现,我正在考虑与delete表单冲突的其他表单(或其他元素)。可能尝试在当前模板之外使用它(没有任何其他标记)。
    {% if delete_path is defined %}
        <form id="delete" action="{{ path(delete_path, {id: entity.id}) }}" method="POST" class="pull-right" style="margin-top: -43px; margin-right: 10px;">
            {{ form_widget(deleteForm) }}
            <button type="submit" class="btn btn-default">{{ delete_form_submit_button|trans }}</button>
        </form>
    {% endif %}