Laravel - 检查命名错误包的名称
Laravel - Check name of named error bag
我的注册表格和登录表格在同一页面上,但在不同的选项卡中。默认情况下,活动选项卡是登录。注册时如果有任何错误,将返回错误消息,我可以使用命名错误包在正确的位置打印错误消息。
问题是当错误来自注册表时,活动选项卡应该是注册。为此,我需要检查 laravel 验证的命名。
我该怎么做?
验证代码是:
if ($validator->fails()) {
return back()
->withErrors($validator, 'register')
->withInput();
}
您的标签 link 应该如下所示:
如果 /auth 是您页面的路由则
对于登录选项卡:/auth#login
=> 这将显示登录选项卡
对于寄存器选项卡:/auth#register
=> 这将显示寄存器选项卡
<ul class="nav nav-tabs tab-nav-right" role="tablist">
<li role="presentation" class="active"><a href="#login" data-toggle="tab"></a></li>
<li role="presentation"><a href="#register" data-toggle="tab"></a</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="login">
<b>Login Form</b>
@if (Request::path()=='auth#login' && count($errors) > 0)
@foreach ($errors->all() as $error)
<p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</p>
@endforeach
@endif
</div>
<div role="tabpanel" class="tab-pane fade" id="register">
<b>Register Form</b>
@if (Request::path()=='auth#register' && count($errors) > 0)
@foreach ($errors->all() as $error)
<p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</p>
@endforeach
@endif
</div>
在您的控制器中登录选项卡错误:
if ($validator->fails()) {
return redirect('/auth#login')
->withErrors($validator, 'login')
->withInput();
}
在您的控制器中注册选项卡错误:
if ($validator->fails()) {
return redirect('/auth#register')
->withErrors($validator, 'register')
->withInput();
}
您可以尝试在 $errors
变量上使用 ->hasBag()
方法来检查给定密钥是否存在包,这将允许您输出相关的 CSS class 或显示正确选项卡所需的任何内容。例如:
<div class="tab registration{!! $errors->hasBag('register') ? ' active' : '' !!}">
</div>
如果注册表中存在错误包,hasBag('register')
将 return true
,假设您已设置验证以定义用于注册错误的包。这将使您 select 正确的选项卡。
我的注册表格和登录表格在同一页面上,但在不同的选项卡中。默认情况下,活动选项卡是登录。注册时如果有任何错误,将返回错误消息,我可以使用命名错误包在正确的位置打印错误消息。
问题是当错误来自注册表时,活动选项卡应该是注册。为此,我需要检查 laravel 验证的命名。
我该怎么做?
验证代码是:
if ($validator->fails()) {
return back()
->withErrors($validator, 'register')
->withInput();
}
您的标签 link 应该如下所示:
如果 /auth 是您页面的路由则
对于登录选项卡:/auth#login
=> 这将显示登录选项卡
对于寄存器选项卡:/auth#register
=> 这将显示寄存器选项卡
<ul class="nav nav-tabs tab-nav-right" role="tablist">
<li role="presentation" class="active"><a href="#login" data-toggle="tab"></a></li>
<li role="presentation"><a href="#register" data-toggle="tab"></a</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="login">
<b>Login Form</b>
@if (Request::path()=='auth#login' && count($errors) > 0)
@foreach ($errors->all() as $error)
<p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</p>
@endforeach
@endif
</div>
<div role="tabpanel" class="tab-pane fade" id="register">
<b>Register Form</b>
@if (Request::path()=='auth#register' && count($errors) > 0)
@foreach ($errors->all() as $error)
<p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</p>
@endforeach
@endif
</div>
在您的控制器中登录选项卡错误:
if ($validator->fails()) {
return redirect('/auth#login')
->withErrors($validator, 'login')
->withInput();
}
在您的控制器中注册选项卡错误:
if ($validator->fails()) {
return redirect('/auth#register')
->withErrors($validator, 'register')
->withInput();
}
您可以尝试在 $errors
变量上使用 ->hasBag()
方法来检查给定密钥是否存在包,这将允许您输出相关的 CSS class 或显示正确选项卡所需的任何内容。例如:
<div class="tab registration{!! $errors->hasBag('register') ? ' active' : '' !!}">
</div>
如果注册表中存在错误包,hasBag('register')
将 return true
,假设您已设置验证以定义用于注册错误的包。这将使您 select 正确的选项卡。