控制器验证
如果你需要在控制器中进行验证,并且继承了 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);
}