1

我正在做一个 eZ publish 5 项目。这个 CMS 基于 symfony 2。我已经构建了一个没有类的表单,如 tge 页面中所述:http ://symfony.com/doc/current/book/forms.html#using-a-form-without-a-class

在 eZ 发布 5 文档(https://confluence.ez.no/display/EZP/Legacy+configuration+injection)上,我读到我需要将 CSRF 意图参数设置为“旧版”。我不知道该怎么做。我尝试在我的 formBuilder 上使用 add 方法:

$this->createFormBuilder()->add('_token', 'csrf', array('intention'=>'legacy');

但我收到一个错误“无法加载类型 csrf”。

有人可以帮我吗?

谢谢。

4

1 回答 1

2

好的,我已经尝试过了。

我的第一个答案实际上是一个问题:如果您不打算执行任何遗留内核代码作为表单的后续操作,我相信您不需要关心意图。

Symfony 和旧版内核之间的意图只需要在旧版内核启动时匹配(在这种情况下,它将检查是否有令牌,以及是否有效)。

如果您需要使用 Legacy Kernel,您可以通过传递自定义表单选项将意图设置为 legacy:

$formOptions = array( 'intention' => 'legacy' );
$form = $this->createFormBuilder( null, $formOptions )
    ->add( 'text', 'text' )
    ->getForm();

http://symfony.com/doc/current/book/forms.html#csrf-protection中解释了设置默认意图,但我不建议这样做,除非您打算只依赖旧内核。

于 2013-04-30T09:22:21.987 回答