面对批量提交的数据,在使用saveAll方法前,如何验证其数据有效性
在保存单一记录数据前,有多种方法验证其数据有效性,如使用独立的验证器,或控制器的validate方法都可进行。但面对批量提交的数据,如何有效地验证其数据有效性,一直没有找到好的方法,通过查看源码,发现模型类有一个validate属性,在调用saveAll方法时,会自动使用该属性进行验证,但如果想使用自定义验证方法,不知如何使用?
在保存单一记录数据前,有多种方法验证其数据有效性,如使用独立的验证器,或控制器的validate方法都可进行。但面对批量提交的数据,如何有效地验证其数据有效性,一直没有找到好的方法,通过查看源码,发现模型类有一个validate属性,在调用saveAll方法时,会自动使用该属性进行验证,但如果想使用自定义验证方法,不知如何使用?
2020-04-23
任何时候,都可以使用Validate
类进行独立的验证操作,例如:
$validate = new Validate([ 'name' => 'require|max:25', 'email' => 'email']);$data = [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com'];if (!$validate->check($data)) { dump($validate->getError());}
这是5.0
推荐的验证方式,为具体的验证场景或者数据表定义好验证器类,直接调用验证类的check
方法即可完成验证,下面是一个例子:
我们定义一个\app\index\validate\User
验证器类用于User
的验证。
namespace app\index\validate;use think\Validate;class User extends Validate{ protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ];}
在需要进行User
验证的地方,添加如下代码即可:
$data = [ 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'];$validate = Loader::validate('User');if(!$validate->check($data)){ dump($validate->getError());}
使用助手函数实例化验证器
$validate = validate('User');
举报