当出现身份验证错误时,注册div重定向到登录页面



我有一个索引页面,它在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();
});

我将给出一个完整的例子来显示每个字段的错误:-有很多方法可以在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文件夹中,您可以定义更多的方法,如自定义消息的消息和属性方法,以提供不同的字段名。示例:

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( 使用validator方法,要使用validator,必须定义facade使用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();

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

您需要区分登录错误和注册错误。你可以用错误包做到这一点!

https://laravel.com/docs/5.7/validation#named-错误行李

医生有点含糊,但应该给你一个很好的起点。

最新更新