参考文档
用法
在控制器中使用
直接调用
Lumen 的控制器基类使用 ProvidesConvenienceMethods
trait,因此可以直接在控制器中调用validate方法
public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
validate方法接收四个入参
$request Request请求类 \Illuminate\Http\Request
$rules 验证规则 数组 [‘参数’=>’规则’]
['id' => 'required']
,多个规则使用|
分隔,例如:['id' => 'required|integer']
$messages 可选参数 自定义错误信息 数组 [‘参数.规则’=>‘提示语句’] ,错误信息中可以使用:attribute占位符来替换实际的字段名,同时还有其他占位符可以使用,具体参考官方文档
['id.required'=>':attribute不能为空']
,返回的错误信息为id不能为空
,多个规则需要定义多个提示语句,例如['id.required'=>':attribute不能为空','id. integer'=>':attribute不是一个有效的整数']
$customAttributes 可选参数 定义字段别名用于替换错误信息中的
:attribute
数组 [‘参数’=> ’别名‘],例如['id'=>'ids']
返回的required错误信息则就是ids不能为空
[1]参考链接
示例:
public function test()
{
$result = app('request');
$this->validate($result, [
'id' => 'required|integer'
], [
'id.required' => ':attribute不能为空',
'id.integer' => ':attribute不是一个有效的整数'
], [
'id' => 'ids'
]);
//验证通过...
);
封装成对象调用(可灵活根据自己需求调整封装)
目前提供两种思路
- 一个类负责少量的字段验证,验证时通过多个验证类组合起来验证,优势是验证解耦,一样字段只需要定义一次。劣势是字段过于细化,不便于管理,对于要一次验证大量字段时需要传入验证类过多。
- 一个类负责大量的字段验证,验证时传入一个参数,根据参数选择需要验证的数组。优势是一个类可以对增删改查所需要验证的字段都写在一起,便于管理。劣势是耦合高,无法再其他地方复用。
当然两种思路也可以一起用,根据需求灵活选择
创建自定义基类 BaseValidate
定义rules 、messages、custom 方法,返回空数组,静态还是非静态都可以,本文中均使用静态形式。
protected