谈表单验证案例之ThinkPHP3.2使用ThinkPHP5.0+的Validate类

对表单进行验证是非常繁琐,重复,但有不得不做的事情,自从用了laravel的验证类后,瞬间觉得脑洞打开,以前在javascript的有实现相关功能的函数,但没完整整理出封装出类的思路,下面由几个案例入手,最后在整理下该类实现的思路,tp5.0中的validate类有借鉴laravel的意思,下面的例子为在tp3.2中加载使用tp5.0中的validate类:

下载ThinkPHP5.0+,找到

thinkphp\library\think\Validate.php

复制到

framework\ThinkPHP\Library\Think

并且重命名:

Validate.php -> Validate.class.php

然后在框架 functions.php 文件里,添加大V方法。
functions.php 路径:

framework\ThinkPHP\Common
/**
 * 实例化验证类 格式:[模块名/]验证器名
 * @param string $name         资源地址
 * @param string $layer        验证层名称
 * @param string $common       公共模块名
 * @return Object|false
 * @throws Exception
 *
 * @author chengbin
 */
function V($name = '', $layer = 'Validate', $common = 'Common')
{
    if (empty($name)) {
        return new Think\Validate;
    }
    static $_validate  =   array();
    $guid = $name . $layer;
    if (isset($_validate[$guid])) {
        return $_validate[$guid];
    }

    $class = parse_res_name( $name, $layer );
    if (class_exists($class)) {
        $validate = new $class;
    } else {
        if(!C('APP_USE_NAMESPACE')){
            import('Common/'.$layer.'/'.$class);
        }else{
            $class      =   '\\Common\\'.$layer.'\\'.$name.$layer;
        }
        if (class_exists($class)) {
            $validate = new $class;
        } else {
            throw new Exception('Validate Class Not Exists:' . $class);
        }
    }
    $_validate[$guid] = $validate;
    return $validate;
}

调用实例:

$allInvestRecordValidate = V('AllInvestRecord');
if( !$allInvestRecordValidate->scene('ret')->check( $request ) ) {
    throw new \Exception( $allInvestRecordValidate->getError() );
}

AllInvestRecord路径:

common\Common\Validate\AllInvestRecordValidate.class.php

AllInvestRecordValidate类:

<?php
namespace Common\Validate;

class AllInvestRecordValidate extends \Think\Validate
{

    protected $rule =   [
        'loan_id' => 'require',
    ];

    protected $message  =   [
        'loan_id.require' => '缺少参数 loan_id'
    ];

    protected $scene = [
        //流标场景
        'ret' => ['loan_id'],
    ];

}

验证类使用方法,可以参照ThinkPHP5.0+的Validate类文档:
http://www.kancloud.cn/manual/thinkphp5/129352


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值