我正在修改模板edit.html.twig以隐藏任何字段。 我已经修改了控制器中的editAction以加载我的模板。 我遇到了CSRF的问题。提交表单时,令牌CSRF无效。我试图重新加载表单,但我有相同的结果。 (该模块是在MOST 1.1.0和ZK 2.0.2中创建的,我正在修改edit.html.twig)
问题是什么?
我已尝试插入我删除的字段,但问题仍然存在。
消息错误:" CSRF令牌无效。请尝试重新提交表单。" _token( " Symfony的\元器件\表格\扩展\核心\型号\ HiddenType" )
我检测到未在模板中创建令牌。如果我有此代码,则生成令牌。
{{form_end(form)}}
如果我将代码更改为:
{{form_end(form,{' render_rest':false})}}
该令牌未生成。
所以,我补充道 {{form_widget(form._token)}} 现在生成令牌,但是当我提交表单时,我有相同的消息" CSRF令牌无效。请尝试重新提交表单。"
答案 0 :(得分: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
"
这可确保生成器不会重新创建和覆盖此文件,因此您的自定义代码也会在重新生成后保留。