禁用Sonata Admin生成的表单中的CSRF保护

时间:2016-08-25 10:38:40

标签: symfony sonata-admin

在Sonata Admin中,我需要在某些表单中禁用CSRF令牌,但有时我不想创建Form Type类,而是选择让Sonata生成表单,如下所示:

/** @var $form \Symfony\Component\Form\Form */
$form = $this->admin->getForm();

如何从此点禁用CSRF令牌?

2 个答案:

答案 0 :(得分:1)

如果没有Form Type类,更改CSRF字段的最佳方法是在admin类中。为此,可以覆盖此功能:

public function getFormBuilder() {
    $this->formOptions['data_class'] = $this->getClass();
    $this->formOptions['csrf_protection'] = false;
    $formBuilder = $this->getFormContractor()->getFormBuilder(
        $this->getUniqid(),
        $this->formOptions
    );
    $this->defineFormBuilder($formBuilder);
    return $formBuilder;
}

答案 1 :(得分:0)

我认为无法从\Symfony\Component\Form\Form实例访问实施$form->getConfig()的对象(FormConfigInterface):您可以调用它getOptionsgetOption但没有setOption方法。