发生身份验证错误时,将div注册到重定向页面

时间:2019-10-30 15:46:01

标签: jquery laravel validation

我有一个索引页面,该页面已登录并在jQuery控制的不同div上注册。

当注册页面中有错误时,错误页面会重新加载到登录页面中,并且登录页面还显示出错误,这是不应该的

<div class="main">
    <div class="auth-buttons">
        <a class="btn" id="btn-login">Login</a>
        <a class="btn" id="btn-register">Register</a>
    </div>
    <div id="lgn" class="btns">
        <form method="POST" action="{{ route('login')}}" autocomplete="off">
            @csrf
            @if($errors->any())
            <div class="auth-error">
                <i class="icon-warning-sign"></i>Error:Incorrect password/email.Please try again
            </div>
            @endif
        </form>
    </div>
    <div id="reg" class="btns">
        <form method="POST" action="{{ route('register')}}" autocomplete="off">
            @if (count($errors) > 0)
            @foreach ($errors->all() as $error)
            <p>{{ $error }}
                </button>
            </p>
            @endforeach
            @endif
        </form>
    </div>
</div>

jQuery

$('#reg').hide();
$('#btn-login').click(function () {
    $('#reg').hide();
    $('#lgn').show();
});
$('#btn-register').click(function () {
    $('#lgn').hide();
    $('#reg').show();
});

2 个答案:

答案 0 :(得分:0)

我将给出完整的示例以显示每个字段的错误:- 有许多方法可以在laravel中为您的表单提供验证 1)请求方法

public function form(Request $request)
{
  $request->validate([
    'field1' => 'require|min|max',
    'fields2' =>'require|min|max' 
  ],
  [
    'field1.require' => 'your msg',
    'field1.max' => 'your msg',
    'field1.min' => 'your msg',,
    'field2.require' => 'your msg',
  ]
  );
}

2)通过使用php artisan make:request filename创建单独的文件。此文件将使用authorize,rules方法创建到app \ html \ request文件夹中,您还可以定义一些其他方法,例如自定义消息的message和属性方法,以提供不同的字段名称。 例子:

public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required',
            'pass' => 'required|min:6|max:15'
        ];
    }

    public function messages()
    {
        return [
            'email.required' => 'Email is required',
            'pass.required' => 'Password is required',
            'pass.min' => 'Password must be atleast 6 digit long',
            'pass.max' => 'Password must not be greater than 15 digits'
        ];
    }

    public function attributes()
    {
        return [
            'pass' => 'user password',
            'email' => 'email address',
        ];
    }

3)使用验证器方法,要使用验证器,您必须定义立面 使用Illuminate \ Support \ Facades \ validator; 例如:-

$validator = Validator::make($request->all(),[
    			'email' => 'required',
    			'pass' => 'required|min:6|max:15'
    		], 
    		[
    			'email.required' => ':attribute is required',
    			'pass.required' => 'password is required',
    			'pass.min' => 'Password must be atleast 6 digits',
    			'pass.max' => 'Password must not be greater than 15 digits'
    		]
    	)->validate();

让刀片中显示错误消息 1)在刀片制作表格中,并在验证失败(如

)时显示错误消息

<form action="{{route('validation')}}" method="post">
		@csrf
	<div class="form-group">	
		<label>Email</label>
		@error('email')
		<p style="color:red">{{$message}}</p>
		@enderror
	 	<input type="email" name="email" value="{{old('email')}}" class="form-control">	
	</div>
	<div class="form-group">
		<label>password</label>
		@error('pass')
			<p style="color:red">{{$message}}</p>
		@enderror
		<input type="password" name="pass" value="{{old('pass')}}" class="form-control">
	</div>

	<div class="form-group">
		<input type="file" class="form-control" name="files">
	</div>	

	
	<input type="submit" name="submit" value="submit" class="btn btn-primary">
	</form>

2)在控制器中

$validator = Validator::make($request->all(),[
    			'email' => 'required',
    			'pass' => 'required|min:6|max:15'
    		], 
    		[
    			'email.required' => ':attribute is required',
    			'pass.required' => 'password is required',
    			'pass.min' => 'Password must be atleast 6 digits',
    			'pass.max' => 'Password must not be greater than 15 digits'
    		]
    	)->validate();

如果验证失败,它将自动重定向到错误消息为msg的刀片并打印它们。

答案 1 :(得分:0)

您需要区分您的登录错误和注册错误。您可以使用Error Bags做到这一点!

https://laravel.com/docs/5.7/validation#named-error-bags

文档有点模糊,但应该为您提供一个良好的起点。