【问题标题】:Laravel - Check name of named error bagLaravel - 检查命名错误包的名称
【发布时间】:2018-07-05 08:36:31
【问题描述】:

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

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

我该怎么做??

验证代码为:

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

【问题讨论】:

标签: php laravel laravel-validation


【解决方案1】:

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

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

</div>

如果注册表存在错误包,hasBag('register') 将返回 true,假设您已设置验证以定义用于注册错误的包。这将允许您选择正确的选项卡。

【讨论】:

  • 您是否将您使用的密钥更改为register?我在上面的示例中输入了registration
  • 是的,我改成注册了..(我用的是注册)
  • 尝试使用dd($errors-&gt;getBags()),它会告诉您当时有哪些行李可用。它应该返回一个数组,以每个包的标识符为键。
  • 访问包的内容... @error('email', 'register') &lt;strong&gt;{{ $message }}&lt;/strong&gt; @enderror
【解决方案2】:

您的标签链接应如下所示:

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

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2017-12-17
    • 2015-10-04
    • 2015-01-09
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多