EasySwoole的数据校验类放在Core/Utility/Validate
下。你可以通过创建Validate
类添加字段和规则来实现数据校验。可以给每个字段设置缺省错误提示,也可以给每个字段的每条规则设置错误提示,如果某条规则没有错误提示,则返回字段的缺省默认提示。
具体示例代码
- 基本使用
$validate = new Validate();
$validate->addColumn('column1')->withErrorMsg('字段1错误')
->addRule(Rule::INTEGER, [], '字段1必须为整数');
$validate->addColumn('column2')
->addRule(Rule::MAX_LEN, [5], '字段2不能超过五个字符');
$ret = $this->request()->requestParamsValidate($validate);
if($ret->hasError()){
$this->response()->writeJson(Status::CODE_BAD_REQUEST,null,$ret->all());
return;
}
如上图代码所示,你只需要new Validate()
新建一个数据校验类,然后给他添加字段$validate->addColumn('column1')->withErrorMsg('字段1错误')
,你可以根据自己需求决定要不要缺省的错误提示withErrorMsg('字段1错误')
,然后链式调用addRule(Rule::INTEGER, [], '字段1必须为整数')
来字段添加规则。addRule(Rule::MAX_LEN, [5], '字段2不能超过五个字符')
第一个参数传Rule类的静态变量,就是校验的规则,第二个参数是校验所需的参数(数组的形式),第三个参数就是校验失败的提示信息。
- 多级参数
$validate->addColumn('company')
->addRule(Rule::REQUIRED, [], '公司是必传参数');
$validate->addColumn('company.name')
->addRule(Rule::REQUIRED, [], '公司名称是必传参数');
$validate->addColumn('company.name.realName')
->addRule(Rule::REQUIRED, [], '公司全称是必传参数');
如上图代码所示,你只需要用.
来为company
字段设置二级参数name
和三级参数realName
- .参数为数组,数组下实体的参数校验
$validate->addColumn('student.*.name')
->addRule(Rule::MAX_LEN, [5], '名字最大长度为5');
如上所示,传过来的student参数是个数组,数组下有很多学生实体,实体下的属性name
需要验证,可以参照以上的形式去校验。
注意
在使用的过程中,你可能会发现你给某个字段增加Rule,但是并未设置成必要参数required,当你不传这个参数的时候,验证会拦截不通过。类似:
$validate->addColumn('classNo')
->addRule(Rule::INTEGER, [], '班级号必须是整数')
你只需要把这个参数设置成可选参数即可通过验证
$validate->addColumn('classNo')
->addRule(Rule::INTEGER, [], '班级号必须是整数')
->addRule(Rule::OPTIONAL, [], '班级号是可选参数');