验证器
ThinkPHP
框架提供了强大且灵活的验证器,除了内置的一系列验证规则之外还可以自定义验证规则,具体支持的内置验证规则可查看官方开发手册验证器
我们提供了一个已经封装好的验证器基类BaseValidate
,位于vendor\lin-cms-tp5\base-core\src\validate
我们推荐开发者在application\api\validate
这个目录下去书写你的自定义验证器,且继承于BaseValidate
基类
定义完验证器后,如下方式调用,如果通过则会继续执行控制器中的逻辑,否则会抛出一个异常并中断执行
public function login(Request $request)
{
(new LoginForm())->goCheck();//调用自定义验证器
// 省略了一堆逻辑
return $result;
}
异常信息
{
"msg": {
"password": "密码不能为空"
},
"error_code": 66667,
"request_url": "cms/user/login"
}
在某些情况下,
(new LoginForm())->goCheck();
这种语法显得不够优雅,又或者为了一个并不需要复杂验证的接口实现一个验证器显得有些麻烦,于是LinCMS TP5 在原生框架的基础上实现了注解验证器
和注解参数验证
注解验证器示例
原本(new LoginForm())->goCheck()
的调用方式不需要了,只需要在控制器的注释内容中加入固定格式的注解@validate('自定义验证器类名')
,即可实现调用自定义验证器。这里的@validate('LoginForm')
相当于调用的\app\api\validate\user\LoginForm
去验证
/**
* 账户登录
* @param Request $request
* @validate('LoginForm') //注解验证器
* @return array
* @throws \think\Exception
*/
public function login(Request $request)
{
// (new LoginForm())->goCheck(); # 开启注释验证器以后,本行可以去掉,这里做更替说明
// 省略了逻辑代码
}
注解参数验证示例
使用@param('参数名','参数注释','参数规则'),进行单个参数验证
例如:@param('id','ID信息','require|max:1000|min:1')
/**
* 查询指定bid的图书
* @param Request $bid
* @param('bid','bid的图书','require')
* @return mixed
*/
public function getBook($bid)
{
$result = BookModel::get($bid);
return $result;
}
这里要求调用时参数bid
为require
,就是必须。
更多详细介绍查阅注释验证器文档
当前内容版权归 LinCMS-TP5 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 LinCMS-TP5 .