1.独立验证:也就是小范围进行数据验证,不用另外写一个验证类引入;//首先在当前控制器下引入框架的验证类;
use think\Validate;
//在需要验证的方法中写入一下代码;
//验证规则
$rule = [
'name' => 'unique:table(表名必须有)|require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',];
//验证错误信息;
$msg = [
'name.require' => '名字不能为空',
'name.unique' => '名字不能重复'
'name.max' => '不能超过25个字符',
'age.number' => '年龄必须是数字',
'age.between' => '年龄在1到120之间',
'email' => '邮箱格式不正确',
];
//需要验证的数据;
$data = [
'name' => '张三',
'age' => 122,
'email' => 'zhangsan@qq.com',
];
$validate = Validate::make($rule)->message($msg);
$result = $validate->check($data);
if(!$result){
echo $validate->getError();
//ajax返回;
// return $info = ['code'=>0,'msg'=>$validate->getError()];
}
2.验证器验证
首先在和控制器平级层创建一个文件夹为validate,里面有文件,文件名对应当前的控制器名,如在admin控制器需要验证,文件名就为admin.phpnamespace app\index\validate;
use think\Validate;
class Admin extends Validate
{
//验证规则
protected $rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
//返回错误信息
protected $message = [
'name.require' => '名称必须',
'name.max' => '名称最多不能超过25个字符',
'age.number' => '年龄必须是数字',
'age.between' => '年龄只能在1-120之间',
'email' => '邮箱格式错误',
];
}
在控制器中调用;下面会引入上面2的验证类;namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
//需要验证的数据;一般为前端返回的数据;
$data = [
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
];
//注意app前面有一个反斜杠;
$validate = new \app\index\validate\Admin;
// $res = $validate->check($data);
if (!$validate->check($data)) {
dump($validate->getError());
}
}
}
3.验证场景就是在验证类中增加一个规则
protected $scene = [
'edit' => ['name','age'],
'add' => ['name'],
];
//控制器中
//在验证场景,表示在编辑的时候,只会验证name字段;
if (!$validate->scene('edit')->check($data)) {
dump($validate->getError());
}