当AuthController发现验证错误时,如何重定向到注册模式(bootstrap模态)窗口?

时间:2017-03-16 18:10:49

标签: php twitter-bootstrap laravel

我目前正在使用Laravel内置身份验证系统。但我没有使用任何特定页面进行用户注册,而是使用自举模式。我的代码按预期工作,但仅在注册信息(输入值)正确时才能正常工作。

  

但是当输入字段值无效并希望显示错误时,我想重定向到注册模式窗口。

我附上我的代码和图片以便更好地理解:

  

bootstrap模式窗口中的代码:

<button type="button" class="mdl-button mdl-js-button mdl-js-ripple-effect" data-toggle="modal" data-target="#registerModal">Register</button>

<div class="modal registerModal" id="registerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title" id="myModalLabel">User Registration</h4>
      </div>
      <form action="{{ route('register') }}" method="POST">
      <div class="modal-body">
          <div class="form-group">
            <div class="row">
              <div class="col-md-3"><label for="name">Name:</label></div>
              <div class="col-md-9"><input type="text" name="name" class="form-control" id="name" placeholder="Your name"></div>
            </div>
            <br>
            <div class="row">
              <div class="col-md-3"><label for="email">Email:</label></div>
              <div class="col-md-9"><input type="email" name="email" class="form-control" id="email" placeholder="Your email **This should be unique**"></div>
            </div>
            <br>
            <div class="row">
              <div class="col-md-3"><label for="password">Password:</label></div>
              <div class="col-md-9"><input type="password" name="password" class="form-control" id="password" placeholder="Your password"></div>
            </div>
            <br>
            <div class="row">
              <div class="col-md-3"><label for="password_confirmation">Confirm Password:</label></div>
              <div class="col-md-9"><input type="password" name="password_confirmation" class="form-control" id="password_confirmation" placeholder="Confirm your password"></div>
            </div>
          </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="submit" class="btn btn-primary">Confirm Registration</button>
        {{ csrf_field() }}
      </div>
      </form>
    </div>
  </div>
</div>
  

路线:

Route::post('/auth/register', ['uses'=>'Auth\AuthController@postRegister', 'as'=>'register']);
  

我要重定向的模态窗口:

enter image description here

感谢。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您有两个选项,您可以进行Ajax身份验证并接收控制器发送的错误响应的验证数据,或者您可以检查bs3模态事件,我认为您可以使用以下方法实现: http://getbootstrap.com/javascript/#js-events

答案 1 :(得分:0)

bretanac93的回答是一种更为正确的做法,因为模式本身会保持开放状态,当价值不正确时,用户不会因整个页面闪烁而感到沮丧;它表示重新实现和添加javascript逻辑/服务器验证逻辑可能需要做很多工作(它可能值得做)。

但是那说;问题是当你因为验证错误而返回到页面时,模态不再出现,因为在当前代码中,初始化模态窗口的唯一方法是按钮单击本身。您可以做的是添加逻辑以在验证失败时重新显示模态窗口。

像这样;

@if( $errors->isNotEmpty() )
  <script>
    $(function () {
       $('#registerModal').modal('show')
    })
  </script>
@endif

所有这些都要记住,您当前的注册模式没有任何验证显示代码,以向用户显示哪些部分引发了验证错误。