Symfony2.1にログインフォームがあります。これは、Symfonyが内部でログインを処理するため、コントローラーが接続されていないルートに投稿されます。
では、このフォームにフィールドを追加し、エンティティでSetXxxx()メソッドを呼び出して、それを永続化するにはどうすればよいでしょうか。ログインフォームのPOST値を傍受する方法がありません。
Symfony2.1にログインフォームがあります。これは、Symfonyが内部でログインを処理するため、コントローラーが接続されていないルートに投稿されます。
では、このフォームにフィールドを追加し、エンティティでSetXxxx()メソッドを呼び出して、それを永続化するにはどうすればよいでしょうか。ログインフォームのPOST値を傍受する方法がありません。
これを行うには、カスタム認証プロバイダーを実装し、そのメンバーの1つを永続化する独自の認証トークンを作成します。
AuthenticationSuccessHandler
( http://blog.alterphp.com/2011/10/set-up-authenticationsuccesshandler.htmlを参照) を作成し、エンティティ マネージャーまたは更新を処理するサービスを注入することで、多くの手間を省くことができます。あなたのエンティティとそれを永続化します。
そのブログはインターフェースAuthenticationSuccessHandlerInterface
を直接実装していますが、拡張Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler
して追加することもできますonAuthenticationSuccess