1

私は eZ パブリッシュ 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 とレガシー カーネルの間の意図は、レガシー カーネルが起動された場合にのみ一致する必要があります (この場合、トークンが存在するかどうか、および有効かどうかがチェックされます)。

レガシー カーネルを使用する必要がある場合は、カスタム フォーム オプションを渡すことでインテンションをレガシーに設定できます。

$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 に答える