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">&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();
    }

您可以尝试在 $errors 变量上使用 ->hasBag() 方法来检查给定密钥是否存在包,这将允许您输出相关的 CSS class 或显示正确选项卡所需的任何内容。例如:

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

</div>
如果注册表中存在错误包,

hasBag('register') 将 return true,假设您已设置验证以定义用于注册错误的包。这将使您 select 正确的选项卡。