【问题标题】:Zikula CSRF token is invalidZikula CSRF 令牌无效
【发布时间】:2017-11-28 12:34:51
【问题描述】:

我正在修改模板 edit.html.twig 以隐藏任何字段。 我也修改了控制器中的 editAction 以加载我的模板。 我遇到了 CSRF 的问题。当我提交表单时,令牌 CSRF 无效。我试图重新加载表单,但结果相同。 (该模块是在 MOST 1.1.0 和 ZK 2.0.2 中创建的,我正在修改 edit.html.twig)

有什么问题?

我已尝试插入已删除的字段,但问题仍然存在。

消息错误:“CSRF 令牌无效。请尝试重新提交表单。” _token ( “Symfony\Component\Form\Extension\Core\Type\HiddenType” )

我检测到没有在模板中创建令牌。如果我有此代码,则会生成令牌。 {{ form_end(form) }}
如果我将代码更改为: {{ form_end(form, {'render_rest': false}) }} 没有生成令牌。

所以,我添加了 {{ form_widget(form._token) }} 现在生成了令牌,但是当我提交表单时,我有相同的消息“CSRF 令牌无效。请尝试重新提交表单。”

【问题讨论】:

  • 很遗憾,如果没有更多信息,我们无法为您提供帮助。请阅读stackoverflow.com/help/how-to-ask 并提供您收到的具体代码和错误消息
  • 我已经用代码更新了帖子。

标签: forms symfony zikula


【解决方案1】:

你应该使用

{{ form_end(form) }}

再次执行以下操作以删除不需要的字段。

编辑 modules/YourVendor/YourAppModule/Form/Type/YourFormType.php 并添加如下内容:

use Symfony\Component\Form\FormBuilderInterface;

...

/**
 * @inheritDoc
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    parent::buildForm($builder, $options);

    $builder->remove('yourUnwantedField');
}

最后将修改后的文件路径添加到模型设置容器的skipFiles属性中:

skipFiles "
    Form/Type/YourFormType.php
"

这确保生成器不会重新创建和覆盖此文件,因此您的自定义代码在重新生成后也会保留。

【讨论】:

  • 正确,但我与令牌有相同的消息。我已经编辑了我的帖子。
  • 我不只是想在模板中隐藏字段。我想更改更多细节,因此答案对我的目的无效。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-01-02
  • 2017-07-15
  • 2018-05-12
  • 2015-10-25
  • 2019-09-05
  • 2020-05-19
  • 2022-08-16
  • 2014-08-26
相关资源
最近更新 更多