系统的控制器基类还提供了数据验证功能,可以调用`validate方法`进行数据验证,如下:
~~~
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello()
{
$result = $this->validate(
[
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
],
[
'name' => 'require|max:25',
'email' => 'email',
]);
if(true !== $result){
// 验证失败 输出错误信息
dump($result);
}
}
}
~~~
如果你有一些规范的规则需要定义,可以定义一个相关的验证器类。
例如,下面给用户相关的验证定义了一个验证器类:
~~~
<?php
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'],
];
}
~~~
控制器中的验证代码可以简化为:
~~~
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello()
{
$result = $this->validate($data,'User');
if(true !== $result){
// 验证失败 输出错误信息
dump($result);
}
}
}
~~~
如果对数据验证使用场景,可以使用:
~~~
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello()
{
$result = $this->validate($data,'User.edit');
if(true !== $result){
// 验证失败 输出错误信息
dump($result);
}
}
}
~~~
更多的验证用法在表单请求和验证一讲中会更详细的描述。
#### 总结
了解完了系统的基础控制器的相关功能后,下一讲我们就来了解下请求对象的概念及用法。