下面我们就来说说在CI框架上如何整合TP5验证器!
下载TinkPHP5.0然后复制它的验证器文件.(下载地址:http://www.thinkphp.cn/down.html )
验证器文件所在位置:[thinkphp\library\think\Validate.php]复制这个文件
然后就是在CI的操作:
3.在CI项目目录:application\libraries 下面新建Validate文件夹.把从TP5复制的验证器文件放到这里面去.
4.然后在:application\config\autoload.php.设置验证器文件为预加载.
//默认是:$autoload['libraries'] = array(); $autoload['libraries'] = array('Validate/Validate');
5.这时就可以新建验证器文件了:比如:新建auth验证器.文件名为 Auth.php(保存在:application\libraries\Validate\下)
内部代码为:
<?php // +---------------------------------------------------------------------- // | 登录验证器 Author:xiaochuan 28126649@qq.com // +---------------------------------------------------------------------- if(!defined('BASEPATH')) EXIT('No direct script asscess allowed'); class Auth_Validate extends Validate { protected $rule = [ 'phone' => 'require|regex:/^1[34578]{1}\d{9}$/', 'sms_code' => 'require|length:6', 'name' => 'require|min:4', 'password' => 'require|length:6,18', ]; protected $message = [ 'phone.require' => '手机号不能为空', 'phone.regex' => '手机号格式错误', 'sms_code.require' => '短信验证码不能为空', 'sms_code.length' => '短信验证码必须等于6位', 'name.require' => '用户名不能为空', 'name.min' => '用户名必须大于4个字符', 'password.require' => '密码不能为空', 'password.length' => '密码必须在:6-18位之间', ]; protected $scene = [ 'regin' => ['phone','sms_code','name','password'], 'login' => ['phone','password'], ]; } //注意上面的东西都是自己需要写的. $rule:验证规则 $message:提示信息 $scene:验证模型
6.那么剩下的注是如何使用了.
在控制器中调用验证器前.为了方便我们需要定义一个函数.目的就是为了方便.当然要整合TP5的验证器.真正使用时就要跟TP5用法一样才行.所以我们定义一个函数为:
/** * 加载验证器 * author:xiaochuan * @param string $class 验证器文件名名(Auth) */ function validate($class=null) { if(empty($class)) EXIT('No direct script asscess allowed'); require_once(APPPATH."libraries/Validate/{$class}.php"); $classstr = $class.'_Validate'; $validate = new $classstr; return $validate; }
7.下面就是真正在控制器中使用我们的验证器.测试效果了.GOGOGO:
//接收到的数据 $check['phone'] = param('phone'); $check['password'] = param('password'); //验证数据 $validate = validate('Auth'); if(!$validate->scene('login')->check($check)) $this->actionError($validate->getError());
这里的$this->actionError 也是我自己定义的跳转方法.不用理会.
$validate->getError(); //验证不通过就会输出上面$message对应的提示信息.
现在大功告成了.
用过TP5.0的人.看到上面的使用.是不是跟TP5中的用法一模一样了啊.
觉得不错的请点赞!
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/30.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意