"thinkphp", "email" => "thinkphp@q" />
牛骨文教育服务平台(让学习变的简单)

控制器验证

如果你需要在控制器中进行验证,并且继承了 hinkController的话,可以调用控制器类提供的validate方法进行验证,如下:

$result = $this->validate(
    [
        "name"  => "thinkphp",
        "email" => "thinkphp@qq.com",
    ],
    [
        "name"  => "require|max:25",
        "email"   => "email",
    ]);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

如果定义了验证器类的话,例如:

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"],
    ];
}

控制器中的验证代码可以简化为:

$result = $this->validate($data,"User");
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

如果要使用场景,可以使用:

$result = $this->validate($data,"User.edit");
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

在validate方法中还支持做一些前置的操作回调,使用方式如下:

$result = $this->validate($data,"User.edit",[],[$this,"some"]);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}