laravel之验证
2018-05-23 本文已影响1人
空气KQ
控制器验证
$this->validate(验证参数,[验证规则],自定义错误消息提示);
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
首次验证失败后中止后续规则验证,属性中分配bail规则
$this->validate($request, [
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',]
);
如果title属性上的required规则验证失败,则不会检查unique规则,规则会按照分配顺序依次进行验证。
表单请求验证
生成一个request验证表单
php artisan make:request PostRequest
在rules里面设置
public function rules()
{
return [
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',]
];
}
这个表示是否认证权限,一般设置return true,否则会提示没有权限。除非你页面需要设置权限控制操作
public function authorize()
{
return true;
}
自定义错误消息
public function messages(){
return [
'title.required' => 'A title is required',
'body.required' => 'A message is required',
];
}
控制器调用
//引入命名
use App\Http\Requests\PostRequest;
public function store(PostRequest $request)
{
print_r($request->all());
}
手动验证
Validator::make(参数,规则,消息);
//引入
use Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
//验证失败操作判断
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
// 存储博客文章...
}
自动重定向
Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
])->validate();
处理错误信息
默认在每个验证blade里面都会有$errors这个变量,直接调取
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
获取第一条错误信息,使用first方法
视图下
{{ $errors->first('email') }}
控制器下获得
$errors = $validator->errors();
echo $errors ->first('email');
获取指定字段的所有错误信息,使用get('字段')
foreach ($messages->get('email') as $message) {
//
}
数组元素错误信息,使用*或者是指定数组索引
foreach ($errors->get('attachments.*') as $message) {
//
}
获取所有字段的所有错误信息,all方法
foreach ($messages->all() as $message) {
//
}
否存在某字段的错误信息
if ($messages->has('email')) {
//
}
获取指定格式的错误信息
echo $messages->first('email', '<p>:message</p>');
foreach ($messages->all('<li>:message</li>') as $message) {
//
}
在语言文件中指定自定义消息
resources/lang/xx/validation.php.语言文件的custom数组
'custom' => [
'email' => [
'required' => 'We need to know your e-mail address!',
],
],
验证规则请看下一篇
https://www.jianshu.com/p/9e7aa6fe81ab