下面我们就来说说在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、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意

