ThinkPHP5控制器验证使用方法
作者:Alpha时间:2017-09-14 阅读数:8165 +人阅读
今天在敲代码的时候用到了tp5的validate,刚开始参考别人代码写的时候怎么都错误,多次检查还是不存在类。原本我的validate验证文件是在app\weixin\validate下的,结果访问控制器的时候报错:在app\common\validate下找不到,这当然找不到了,那为什么会报这种错误呢?
于是查看tp5官方文档,下面这些是官方文档的内容,也就是说你在控制器里想要往数据库添加数据,直接在添加的时候进行验证,可以实例化验证类进行字段正确性验证。
如果你需要在控制器中进行验证,并且继承了\think\Controller
的话,可以调用控制器类提供的validate
方法进行验证,如下:
$result = $this->validate( [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ], [ 'name' => 'require|max:25', 'email' => 'email', ]);if(true !== $result){ // 验证失败 输出错误信息 dump($result); }
如果定义了验证器类的话,例如:
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'], ]; }
控制器中的验证代码可以简化为:
$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); }
看过官方文档后确实是很方便,于是自己在应用下重新走了一遍,竟然正常了,究其原因应该是手写失误,直接使用$this->validate($data,'验证类名')确实方便了不少
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com