Laravel - Проверьте имя именованной ошибки - PullRequest
0 голосов
/ 05 июля 2018

Моя форма регистрации и форма входа находятся на одной странице, но на разных вкладках. По умолчанию активной вкладкой является логин. При регистрации, если есть какие-либо ошибки, сообщения об ошибках возвращаются, и я могу напечатать сообщение об ошибке в нужном месте, используя именную сумку ошибок.

Проблема в том, что при появлении ошибки из формы регистрации активная вкладка должна быть зарегистрирована. Для этого мне нужно проверить правильность имени laravel.

Как я могу это сделать ??

Код для проверки:

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете попробовать использовать метод ->hasBag() для переменной $errors, чтобы проверить, существует ли сумка для данного ключа, что позволит вам вывести соответствующий класс CSS или любой другой элемент, необходимый для отображения правильной вкладки. Например:

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

</div>

hasBag('register') вернет true, если в регистрационной форме присутствует пакет с ошибками, при условии, что вы настроили проверку, чтобы определить, какую сумку использовать для ошибок регистрации. Это позволит вам выбрать правильную вкладку.

0 голосов
/ 05 июля 2018

Ваша вкладка должна быть похожа на следующую:

если / 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();
    }
...