控制器中的验证
调用$this表示本控制器,laravel会自动生成一个error的全局变量来保存错误信息,调用下面的validate方法,第一个参数表示传过来的参数的条件,第二个参数表示哪一个条件的解释,前面的是哪一个条件,后面的attribute是占位符代替条件,后面跟中文解释;第三个参数表示将传过来的字符在输出的时候替代成自己想要的中文。
$this->validate($request,[
'Infomation.CompanyName' => 'required|min:5|max:20',
'Infomation.Comment' => 'required|min:6'
],[
'required' => ':attribute 不能为空',
'min' => ':attribute 长度不能小于5位'
],[
'Infomation.CompanyName' => '公司名字',
'Infomation.Comment' => '公司备注'
]);
然后在视图中输出输出错误信息
//如果有,遍历出所有错误
@if(count($errors))
-
{{$err}}
@foreach($errors->all() as $err)
@endforeach
@endif
结果展示
公司名字 不能为空
公司备注 不能为空
//原文为 The Infomation.CompanyName field is required
The Infomation.Comment field is required
通过上述的三个参数将其转换成中文注解
第二种使用validate类验证
$validate = \Validate::make(
$required->input(),[
'Infomation.CompanyName' => 'required|min:5|max:20',
'Infomation.Comment' => 'required|min:6'
],[
'required' => ':attribute 不能为空',
'min' => ':attribute 长度不能小于5位'
],[
'Infomation.CompanyName' => '公司名字',
'Infomation.Comment' => '公司备注'
]
);
if($validator ->fails())
{
return redirect()->back()->withErrors($validator);
}
除了第一个参数不同,后面的数组里面都一样,判断fails 中是否有错误,将这个错误(参数)返回上一个页面
3.想要在字段后面跟错误信息,直接在文本框后面加上
{{$errors->first('Infomation.CompanyName')}}
调用$errors下面的first方法,字符串中写上数组中的哪一个字段
4.保存用户输入的字段,比如有十个字段,用户提交不通过时,会取消所有字段内容
在上述返回数据的时候调用另一个函数
return redirect()->back()->withErrors()->withInput();
然后在视图页面相应的输入款的value属性中调用old方法,参数为相应数组
value="{{old('Infomation')['CompanyName']}}"
总结:两种方法,第一种直接验证,第二种可以保存字段