thinkphp的Model模型验证

thinkphp5的验证器(validate)和场景验证在Model中的使用

一、模型中的验证方式,如下(适用于临时验证等情况,不推荐):

$User = new User;
$result = $User->validate(
    [
        'name'  => 'require|max:25',
        'email'   => 'email',
    ],
    [
        'name.require' => '名称必须',
        'name.max'     => '名称最多不能超过25个字符',
        'email'        => '邮箱格式错误',
    ]
)->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->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',
    ];
    
    protected $message = [
        'name.require'  =>  '用户名必须',
        'email' =>  '邮箱格式错误',
    ];
    
    protected $scene = [
        'add'   =>  ['name','email'],
        'edit'  =>  ['email'],
    ];    
}

模型验证代码

$User = new User;
// 调用当前模型对应的User验证器类进行数据验证
$result = $User->validate(true)->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}

//如果需要调用的验证器类和当前的模型名称不一致,则可以使用(不推荐):
$result = $User->validate('Member')->save($data);

场景验证示例

$User = new User;
// 调用User验证器类下的edit场景进行数据验证
$result = $User->validate('User.edit')->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}

 

你可能感兴趣的:(PHP,#,thinkphp)