用此方法,只需要验证器名称与controller名称一致,场景名字与controller的方法名字一致,即可完成验证
自定义一个MyApi的controller作为基类
其中初始化方法里面进行统一验证
protected function _initialize()
{
parent::_initialize(); // TODO: Change the autogenerated stub
$request = $this->request;
$class = 'app\common\validate\\' . $request->controller();
if (class_exists($class)) {
$validate = $this->validate($request->param(), $request->controller() . '.' . $request->action());
$validate !== true && $this->error('参数错误:' . $validate);
}
}
这样就只需要在common模块的validate目录下写入对应的验证规则
验证规则示例
namespace app\common\validate;
use think\Validate;
class Demo extends Validate
{
/**
* 验证规则
*/
protected $rule = [
'name' => 'require|max:3',
'age'=>'require'
];
/**
* 提示消息
*/
protected $message = [
'name.require' => '少了用户名',
'name.max' => '最多3位',
'age.require' => '缺少年龄'
];
/**
* 验证场景
*/
protected $scene = [
'add' => ['name','age'],
'edit' => ['age'],
];
}
其中场景中,场景的名字就是controller中的方法名字
因此,只需要验证器名称与controller名称一致,场景名字与controller的方法名字一致,即可完成验证