我有一个索引页面,该页面已登录并在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();
});
答案 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
文档有点模糊,但应该为您提供一个良好的起点。