FOSUserBundle を使用して Web サイトのユーザーを管理しています。私の目標は、Boostrap フレームワークに基づいてモーダル ウィンドウにログイン フォームが表示されるようにすることです。下はモーダルウィンドウの私のコードです
<div class="modal hide" data-backdrop="static" id="login">
<div class="modal-header"> <a class="close" data-dismiss="modal">×</a>
<h3>Connexion</h3>
</div>
<div class="modal-body" >
</div>
</div>
<a class="btn btn-primary" data-toggle="modal" data-target="#login"
href="{{ path('fos_user_security_login') }}">Sign in</a>
このコードは、ユーザーがユーザー名とパスワードを入力する際に間違いを犯さなければ、完全に機能します。/login
エラーが発生した場合、symfony2は、バンドル FOSUserBundle によって提供される最小限の小枝ページであるページに直接リダイレクトします。
この問題を解決するために、私の考えは、ウィンドウを再度表示する JavaScript イベントをリッスンすることでした。これは、window.hashchange イベントを通じて行われます。そのための提案されたコードは次のとおりです。
<script type="text/javascript" src="{{ asset('jquery/1.9.1/jquery.ba-hashchange.min.js')}}"></script>
<script>
$(function() {
// Bind the event.
$(window).hashchange(function() {
// Alerts every time the hash changes!
alert(location.hash);
if(location.hash === "#login"){
$('#login').modal();
}
});
// Trigger the event (useful on page load).
$(window).hashchange();
});
</script>
これは素晴らしい: このコードを通じて、この URL に到達すると、ログイン モーダル ウィンドウに表示できるようになりました/#login
。
しかし、symfony にはルーティングの問題があるため、問題はまだ解決されていません。FOSUserBundle のコントローラーでリダイレクトを行うには、すべてのバンドルを書き直す必要があると思います。
何か案が?