Форма Symfony 2 в eZ Publish 5, интуиция CSRF

Я работаю над проектом eZ publish 5. Эта CMS основана на Symfony 2. Я создал форму без класса, как описано на странице tge: http://symfony.com/doc/current/book/forms.html

На eZ опубликовать 5 документов ( https://confluence.ez.no/display/EZP/Legacy+configuration+injection) я прочитал, что мне нужно установить для параметра намерения CSRF значение "legacy". Я не могу понять, как это сделать. Я попытался использовать метод add в моем formBuilder:

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

Но я получаю сообщение об ошибке "не удалось загрузить тип csrf".

Может ли кто-нибудь помочь мне в этом?

Благодарю.

1 ответ

Решение

Хорошо, я дал это попробовать.

Мой первый ответ на самом деле - вопрос: если вы не собираетесь выполнять какой-либо унаследованный код ядра в качестве продолжения своей формы, я думаю, вам не нужно заботиться о намерении.

Намерения между ядром 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, но я бы не советовал этого делать, если только вы не собираетесь полагаться только на устаревшее ядро.

Другие вопросы по тегам