"require|max:25", "email" => "email", ], [ "name.require" => "名称必须", "name.max" => "名称最多" />
牛骨文教育服务平台(让学习变的简单)

模型验证

在模型中的验证方式如下:

$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());
}

第二个参数如果不传的话,则采用默认的错误提示信息。

如果使用下面的验证器类的话:

namespace appindexvalidate;
use thinkValidate;
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());
}

如果需要调用的验证器类和当前的模型名称不一致,则可以使用:

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

同样也可以支持场景验证:

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