Laravel-检查命名错误包的名称

时间:2018-07-05 08:36:31

标签: php laravel laravel-validation

我的注册表格和登录表格在同一页面上,但是在不同的选项卡中。默认情况下,活动选项卡是登录名。注册时如果有任何错误,则会返回错误消息,并且可以使用命名的错误包在正确的位置打印错误消息。

问题是当错误来自注册表单时,活动选项卡应该被注册。为此,我需要检查laravel验证的名称。

我该怎么做?

验证码为:

if ($validator->fails()) {
    return back()
    ->withErrors($validator, 'register')
    ->withInput();
}

2 个答案:

答案 0 :(得分:3)

您可以尝试使用->hasBag()变量上的$errors方法来检查给定密钥是否存在一个包,这将允许您输出相关的CSS类或显示正确的标签。例如:

<div class="tab registration{!! $errors->hasBag('register') ? ' active' : '' !!}">

</div>
如果注册表格中存在错误记录袋,则

hasBag('register')将返回true,假设您已设置验证以定义用于错误记录的记录袋。这样您就可以选择正确的标签。

答案 1 :(得分:0)

“标签”链接应如下所示:

如果/ 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">&times;</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">&times;</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();
    }