目的:可以验证传参的正确与否
比如要验证 admin/user 模块的参数
composer 命令安装:php think make:validate admin/User
验证器中
<?php
namespace app\admin\validate;
use think\Validate;
class User extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'user_name' => 'require|length:2,6',
'user_phone' => 'mobile',
'user_password' => 'alphaDash|length:6,16',
'user_sex' => 'require',
'role_id' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'user_name.require' => 101001,
'user_name.length' => 101002,
'user_phone.mobile' => 101003,
'user_password.alphaDash' => 101004,
];
protected $scene = [
'index' => [''],
'add_img' => ['user_name','user_phone','user_password','user_sex','role_id'],
];
}
控制器中
public function add_img(Request $request)
{
if ($request->isPost()) {
//取所有值 先验证
$arr = json_decode($request->param('data'), true);
unset($arr['role_id']);
$validate = new \app\admin\validate\User;
if (!$validate->scene('add_img')->check($arr)) {
return ($validate->getError());
}
$model = new UserModel();
$info = $model->add_img($arr);
return $info;
}
$rolemodel = new RoleModel();
$info = $rolemodel->index($request->param('limit'));
$this->assign('info',$info);
return $this->fetch();
}
注意:当某个控制器有了自己的验证器后,改控制器中的所有方法都要有相应的验证场景,如果不需要验证就用 [''] 来取代