[thinkPHP5项目实战_14]场景验证
来源:互联网 发布:javascript eval 解密 编辑:程序博客网 时间:2024/05/06 19:21
thinkPHP5提供了场景验证功能,参考文档位于https://www.kancloud.cn/manual/thinkphp5/129322
比如在创建栏目中,我们不允许关键词为空,而在编辑栏目时允许关键词为空,在同一个验证器中,可以针对这些不同的场景进行不同的验证定义
首先打开之前写好的cate验证器application/admin/validata/Cate.php,添加指定处代码:
<?phpnamespace app\admin\validate;use think\Validate;class Cate extends Validate{ //验证规则 protected $rule = [ // catename验证,必须,长度不能超过25,名称不能重复 'catename' => 'require|max:25|unique:cate', 'keywords' => 'require', ]; //验证提示 protected $message = [ 'catename.unique' => '栏目名称不能重复', 'catename.max' => '栏目名称不能大于5个字符', 'catename.require' => '栏目名称必须', 'keywords.require' => '栏目关键词必须', ]; //添加代码验证场景 protected $scene = [ 'edit' => ['catename'], ];}
在$scene规则中定义好需要验证的字段为catename,只在edit条件下验证。
在cate的控制器文件aplication/admin/controller/Cate.php的edit操作方法中添加指定处代码:
public function edit() { //获取修改的信息 $id=input('id'); $cates = db('cate')->where('ID',$id)->find(); $this->assign('cates',$cates);//模板赋值 //修改后提交 if(request()->isPost()){ $data=[ 'ID'=>input('id'), 'catename'=>input('catename'), 'keywords'=>input('keywords'), 'desc'=>input('desc'), 'type'=>input('type') ? input('type') : 0, ]; //验证 $validate = \think\Loader::validate('Cate'); //添加代码->scene('edit') if($validate->scene('edit')->check($data)){ $res = \think\Db::name('cate')->update($data); if($res){ return $this->success('修改栏目成功','lists'); }else{ return $this->error('修改栏目失败'); } }else{ //验证失败输出提示信息 return $this->error($validate->getError()); } } return $this->fetch(); }在验证data之前,进行场景过滤,只验证验证器中定义的场景。
这样,自定义场景验证完成。
阅读全文
0 0
- [thinkPHP5项目实战_14]场景验证
- [thinkPHP5项目实战_09]后台添加栏目及验证
- [thinkPHP5项目实战_06]引入前台页面
- [thinkPHP5项目实战_11]栏目修改
- [thinkPHP5项目实战_16]文章列表展示
- [thinkPHP5项目实战_17]文章编辑
- [thinkPHP5项目实战_19]模型添加数据
- [thinkPHP5项目实战_20]友情链接功能完善
- [thinkPHP5项目实战_22]管理员登录
- [thinkPHP5项目实战_27]前台文章内容展示
- [thinkPHP5项目实战_30]留言板功能完善
- [thinkPHP5项目实战_02]命名空间的定义
- [thinkPHP5项目实战_04]命名空间的引入
- [thinkPHP5项目实战_05]自动生成目录结构
- [thinkPHP5项目实战_07]引入后台管理页面
- [thinkPHP5项目实战_08]模板分离和URL生成
- [thinkPHP5项目实战_10]栏目列表输出和删除
- [thinkPHP5项目实战_12]文章管理界面创建
- centos6.5安装nodejs
- pandas里的loc并列条件索引
- 使用浏览器原生的方法转义特殊字符
- AKKA让并发和容错更容易
- matlab 载入txt文件
- [thinkPHP5项目实战_14]场景验证
- [DP] NOIP2015 子串
- PHP 中cgi,fastcgi,php-fpm的区别
- 关于 fragment重写onCreateOptionsMenu不执行问题
- 基于CentOS搭建微信小程序服务
- html页面标签转义解决
- 数据库中脏读、幻读和不可重复读
- java中自定义注解并通过反射获取注解属性值
- 【异常】在hadoop集群上编译类jar包,因jdk版本不同出现的异常