面对批量提交的数据,在使用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');举报