我正在使用 FOSUserBundle 来管理我的网站用户。我的目标是让登录表单显示在基于 boostrap 框架的模式窗口中。Down是我的模态窗口代码
<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>
如果用户在输入用户名和密码时没有犯任何错误,则此代码运行良好。如果出现错误,symfony2 会将我直接重定向到/login
页面,这是捆绑 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 的控制器中进行重定向。
任何想法?