TP5验证类的使用

  今天用到TP5的validate验证类,发现TP5.0和TP5.1的一点不同,随手记上一笔.

    首先TP5.0使用,在controller同级建一个validate文件夹,因为是纯接口模式的项目,我们应当吐出json格式的信息,TP自带的是页面信息,所以写个基类转换一下.

  还有一个抛异常的类

  基类都写好了,建立一个验证器

 

class BrandsValidate extends BaseValidate
{
protected $rule = [
'要验证的参数名' => '验证规则',
];

//这里有一个$msg作为错误提示信息,但是我们在异常类的定义了; 举个例子
  protect $msg = [
    '要验证的参数名.验证规则' => '错误提示信息,如果其他规则未自己定义,会使用框架自己的定义'
  ];
protected $scene = [
'应用场景名' =>['要验证的参数名,与上面$rule的一致'],
];

}


在控制器中的使用
//参数基本验证
$validate = new BrandsValidate();
if (!$result = $validate->scene('add')->goCheck())
throw new ParameterException($result);

想new一个验证对象,scene就是调用场景,如果参数错误就会调用goCheck,目前来说觉得validate的一个优点,当我的参数很多,并且有重复的时候,不用重复的写,例如添加和修改,基本上只差一个ID.


下面就是遇到的小坑坑.

  场景是 有个验证规则是
require|max:11|integer    一个ID的基本验证  但是在删除中,我允许删除多个ID,所以我要求传的是1,2,3这样的,那么我要重写他的验证规则,在TP5.0中可以在场景中直接重写.

比如我有个场景delete ,要验证的参数Id只要他不能为空就行,其他验证有单独的函数,那我直接在场景中直接修改
protected $scene = [
'delete' =>['id'=>'require'],
];
但是在TP5.1中不支持,要创建一个新的场景
public function seneDelete()
{
    return $this->only(['id'])->remove('id','integer,max');
}

猜你喜欢

转载自www.cnblogs.com/psnh/p/9316164.html
今日推荐