【发布时间】:2019-02-06 20:19:22
【问题描述】:
我想制作一个带有 laravel 表单验证的注册表单。
在那种情况下,我面临一个很大的问题。
表单验证正在运行,但错误未正确显示。
我看到这些电子邮件和电话错误:Validation.unique
对于必填字段:validation.required
这是我的控制器的代码:
public function homeregister(Request $request)
{
$this->validation($request);
$request['password'] = bcrypt($request->password);
$email_verification = time();
$sms_verify_code = mt_rand(100000, 999999);
$name = $request->fname.' '.$request->lname;
$dob = $request->year.'-'.$request->month.'-'.$request->day;
User::create(['email'=>$request->email,'password'=>$request['password'],'fname'=>$request->fname,'lname'=>$request->lname,'gender'=>$request->gender,'dob'=>$dob,'religion'=>$request->religion,'country'=>$request->country,'email_verify_code'=>$email_verification,'phone'=>$request->phone,'sms_verify_code'=>$sms_verify_code,'name'=>$name,'identifier'=>$request->fname,'profile_created_by'=>$request->profile_for]);
$value = $request->email;
$phone = $request->phone;
Session::put('email', $value);
Session::put('phone', $phone);
$myuser = DB::table('users')->select()->where('email',Session::get('email'))->first();
DB::insert('insert into tbl_profile_photo (userid,photo) values(?,?)',[$myuser->id,null]);
DB::insert('insert into tbl_cover_photos (userid,photo) values(?,?)',[$myuser->id,null]);
\Mail::to($value)->send(new wellcome);
Auth::loginUsingId($myuser->id);
Session::put('userid',$myuser->id);
return redirect('/update-profile');
}
验证函数:
public function validation($request)
{
$validatedData = $request->validate([
'fname' => 'required|max:255',
'lname' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'phone' => 'required|unique:users|max:255',
'gender' => 'required|max:255',
'year' => 'required|max:255',
'month' => 'required|max:255',
'day' => 'required|max:255',
'religion' => 'required|max:255',
'country' => 'required|max:255',
'password' => 'required|min:6',
]);
}
我的观点代码:
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
<div class="alert alert-danger alert-dismissible mb-2" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Oh snap!</strong> {{$error}}
</div>
@endforeach
@endif
没听懂?怎么了??
【问题讨论】:
-
表单验证正常,但错误显示不正确。请解释一下?
-
我看到错误
Validation.unique而不是email must be unique -
使用请求,不要在控制器中进行验证。这会让你以后对方法的大小和控制器感到头疼laravel.com/docs/5.7/validation#form-request-validation