1

Symfony2 と FOS ユーザー バンドルの問題...

ページの先頭に独自のログイン フォームを実装しました ( http://forum.symfony-project.org/viewtopic.php?f=31&t=37767の指示に従って FOS ユーザー バンドルを使用します)。

今、私はエラーメッセージを持っています

Variable "csrf_token" does not exist in ::base.html.twig

そのフォーラム(上記のURL)の他の誰かがまったく同じ問題を抱えていて、このように非表示のcsrfフィールドに入れて解決しました

<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

私の問題は、 /login パス上にある場合は正常に機能しますが、私の要点は別のログインページを必要としないことです。フォームを常にページヘッドに統合したいのですが、{{csrf_token}} はページがログイン コントローラによってレンダリングされるときに使用できます...

また、エラーメッセージ (フラッシュ) を取得するにはどうすればよいですか? または、userBundle テンプレートの一部を頭に貼り付けるのではなく、ヘッダーのその部分に userBundle コントローラーをレンダリングする必要がありますか?

4

2 に答える 2

6

フォームコンポーネントを使用して独自のログインフォームを作成する場合は、非表示フィールドとしてcsrfトークンがすでに存在している必要があります。変数が/loginでのみ使用できる理由は、デフォルトのFOSUserBundleログインコントローラーがフォームを使用せず、代わりに、ここcsrf_tokenに示すようにcsrfトークンを手動で生成し、それをビューに渡すためです。

したがって、フォーム上のすべての非表示フィールドを次のようなものでレンダリングしていることを確認するか、FOSUserBundleがここ{{ form_rest(form) }}で行うようにcsrf_tokenを手動で生成し、既存のコードでレンダリングします。

于 2012-06-28T20:48:03.103 に答える
0

コントローラー内から動作する csrf コントローラーを生成するには、以前の投稿 を参照してください。

この例により、あなたが抱えていた問題を解決することができました。これを、FOS ユーザー バンドル フォームを拡張する他の誰かへの参照にします。

于 2012-08-10T23:03:05.863 に答える