thinkphp5作为国内非常流行的PHP开发框架,就不用说了。平时用验证器不多,一般都是在控制器内做的验证,今天心血来潮就试了一把TP5的验证器,用着还不赖。所以对于一些看官方文档一脸懵逼的小伙伴可以参考下这篇博客中波波写的示例用法。
1、首先我们建立一个验证器和验证规则。
因为我这个验证器主要是wap模块下的用户注册信息验证。所以命名空间定义了“app\wap\validate”。示例代码如下:
- <?php
- /**
- * Created by BoBo.
- * Date: 2018/9/4 16:06
- * Function:用户数据验证
- */
- namespace app\wap\validate;
- use think\Validate;
- class User extends Validate{
- protected $rule = [
- 'account' => 'require|length:4,20',
- 'passwd' =>'require|length:4,25',
- 'mobile' =>'require|mobile'
- ];
- protected $message = [
- 'account.require'=>"账号不能为空",
- 'account.length'=>"账号请设置4~20个字符",
- 'passwd.require'=>"密码不能为空",
- 'passwd.length'=>"密码请设置4~25个字符",
- 'mobile.require'=>"手机号不能为空",
- 'mobile.mobile'=>"手机号格式有误"
- ];
- }
2、控制器中对验证器的使用示例。
- <?php
- /**
- * Created by BoBo.
- * Date: 2018/8/22 15:52
- * Function:用户登录
- */
- namespace app\wap\controller;
- use think\Controller;
- use think\Db;
- use think\Loader;
- use think\Session;
- class Login extends Controller{
- /*
- * 测试验证器
- */
- public function test(){
- $data = ['account'=>"",'passwd'=>"123",'mobile'=>"13333333333"];
- $validate = Loader::validate('User');
- $verify = $validate->check($data);
- if(true !== $verify){
- var_dump($validate->getError());
- }else{
- var_dump($verify);
- }
- exit;
- }
- }
3、修改TP5验证器类,增加手机号验证规则。
找到“Validate.php”文件,第95行增加以下代码。
- protected $regex = [
- 'mobile' => '/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|16[6]|(17[0,3,5-8])|(18[0-9])|19[89])\d{8}$/',
- ];
因为手机号号段经常变动,可能官方也是基于这种原因没有增加mobile的内置规则吧,不过换句话讲TP官方的正则验证理论支持所有的数据验证。
通过测试我们可以看到验证器返回了正确的结果。
如果遇到其他问题,大家也可以参考官方文档。https://www.kancloud.cn/manual/thinkphp5/129352