首先是验证层的定义
namespace appindexvalidate;
use thinkValidate;
class User extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
protected $message = [
'name.require' => '名称必须',
'name.max' => '名称最多不能超过25个字符',
'age.number' => '年龄必须是数字',
'age.between' => '年龄只能在1-120之间',
'email' => '邮箱格式错误',
];
在对应的user层可以使用
namespace appindexcontroller;
use thinkController;
class Index extends Controller
{
public function index()
{
$data = [
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
];
$validate = new appindexvalidateUser;
if (!$validate->check($data)) {
dump($validate->getError());
}
}
}
这是一种比较典型的使用验证层的方法
还有就是一种数据验证
namespace appindexvalidate;
use thinkValidate;
class User extends Validate
{
protected $rule = [
'name' => 'checkName:thinkphp',
'email' => 'email',
];
protected $message = [
'name' => '用户名必须',
'email' => '邮箱格式错误',
];
// 自定义验证规则
protected function checkName($value,$rule,$data=[])
{
return $rule == $value ? true : '名称错误';
}
}
当然在任何时候都可以在controller层进行验证数据,而不需要去Validata层追加文件进行规则写入
前提是use thinkValidate;
$validate = Validate::make([
'name' => 'require|max:25',
'email' => 'email'
]);
还有就是规则的验证场景定义:
例如我们对用户的入库操作数据需要进行验证,
但是后期唯一操作不需要在进行验证操作等实际应用:
$data = [
'name' => 'thinkphp',
'age' => 10,
'email' => 'thinkphp@qq.com',
];
$result = $this->validate($data,'appindexvalidateUser.edit');
if(true !== $result){
// 验证失败 输出错误信息
dump($result);
}