-2

我正在修改模板 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 令牌无效。请尝试重新提交表单。”

4

1 回答 1

0

你应该使用

{{ 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
"

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

于 2017-11-29T09:08:14.253 回答