我登录并使用Laravel Auth和materializecss模态注册模态(它们的工作方式与Bootstrap模态相同)。除了一件事,一切都很好。
我提交表单时有一个检查:电子邮件和密码是否匹配?电子邮件是否存在于数据库等中。
当其中一个检查失败时,用户将无法登录,并且错误将存储在php数组中:$ errors。
问题是当表单提交时模式关闭,这在登录良好时很好。但是当登录失败并出现错误时。应该重新打开模态,并且必须在模态中显示错误。
我尝试了很多东西,但我对JS和jQuery没有多少经验。我希望有人可以提供帮助并解释它是如何运作的?
我用这段代码解决了这个问题:
if ($('div#login-email').hasClass('has-error')) {
$('#login-modal').modal('open');
}
if ($('div#login-password').hasClass('has-error')) {
$('#login-modal').modal('open');
}
Laravel在表单组中添加了一个错误类,在那里你做错了。所以当没有类的div:has-error时,一切都很好。
如果有一个类有错误的div,那么在某些时候你失败了。所以模态应该重新打开。
答案 0 :(得分:1)
您需要从表单提交事件中重新打开模型,因为该代码仅在表单提交时执行。
var errors = {{$errors->all()}};
$(function() {
if(errors.length) {
alert('There is an error!');
$('#modal').modal('open');
}
});
答案 1 :(得分:0)
您需要在刀片页面中添加代码
@if (session('openLogin') || Session::has('errors'))
<script>
$('#modalLogin').modal('show');
</script>
@endif
和web.php
Route::get('auth/login',function () {
return redirect('/')->with('openLogin',true);
});
答案 2 :(得分:0)
只需将此代码添加到刀片页上即可验证是否存在错误,然后重新打开模式窗体。
@if ($error = $errors->first('email'))
<script>
$(document).ready(function() {
$("#myModal").modal("show");
});
</script>
@endif