Phalcon搭建多模块框架八:增加验证器批量添加验证规则方法并在控制器中使用

我们经常写api接口,接收的参数需要经过过滤和验证才能使用。我们可以利用phalcon的验证器封装一个批量添加规则的。
这里写图片描述
1、在common下创建Validate.php文件

<?php
/** 
 * @desc 验证器 
 * @author zhaoyang 
 * @date 2018年5月11日 下午4:16:50 
 */
namespace Common;

use Phalcon\Validation;
use Phalcon\Validation\Exception;

class Validate extends Validation {
   

    // 自定义的验证类型
    protected static $types = [ 
        // Check for alphanumeric character(s)
        'alnum' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Alnum'
        ],
        // Check for alphabetic character(s)
        'alpha' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Alpha'
        ],
        // Validates that a value is between an inclusive range of two values.
        'between' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Between'
        ],
        // Calls user function for validation
        'callback' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Callback'
        ],
        // Checks that two values have the same value
        'confirmation' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Confirmation'
        ],
        // Checks if a value has a valid credit card number
        'creditcard' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\CreditCard'
        ],
        // Checks if a value is a valid date
        'date' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Date'
        ],
        // Check for numeric character(s)
        'digit' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Digit'
        ],
        // Checks if a value has a correct e-mail format
        'email' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Email'
        ],
        // Check if a value is not included into a list of values
        'exclusionin' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\ExclusionIn'
        ],
        // Checks if a value has a correct file
        'file' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\File'
        ],
        // Checks if a value is identical to other
        'identical' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Identical'
        ],
        // Check if a value is included into a list of values
        'inclusionin' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\InclusionIn'
        ],
        // Check for a valid numeric value
        'numericality' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Numericality'
        ],
        // Validates that a value is not null or empty string
        'presenceof' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\PresenceOf'
        ],
        // Allows validate if the value of a field matches a regular expression
        'regex' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Regex'
        ],
        // Validates that a string has the specified maximum and minimum constraints
        'stringlength' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\StringLength'
        ],
        // Check that a field is unique in the related table
        'uniqueness' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Uniqueness'
        ],
        // Checks if a value has a url format
        'url' => [ 
            'validator' => 'Phalcon\\Validation\\Validator\\Url'
        ]
    ];

    /**
     * <pre>
     * 基本格式
     * [
     *  [验证字段1,验证类型[,错误提示,验证规则,验证条件,其他参数],
     *  [验证字段2,验证类型[,错误提示,验证规则,验证条件,其他参数],
     * ]
     * 
     **************************************************************************************************
     *
     * 验证字段:
     * 通常为字段名,如果使用了映射,须与映射相对应,验证字段可以为数组(多个字段)
     * 例:[['username', 'age'], 'presenceof', ['username'=>'用户名不能为空','age'=>'年龄不能为空']]
     *
     * 支持的验证类型有(默认为regex):
     * 常用:regex(正则)、presenceof(不能为null or '')、uniqueness(唯一)、inclusionin(在...之中)、uniqueness(检查一个字段在相关表中是惟一的【模型中使用】)
     * 全部:alnum(字母数字)、alpha(字母)、between、callback、confirmation、creditcard、date、digit(数字)、email、exclusionin、file、identical(检查一个值与指定固定值是否相同)、inclusionin、numericality、presenceof、regex、stringlength、uniqueness、url
     *
     * 错误提示:
     * 为字符串,多条错误提示信息用"|"分割,例如stringlength类型的验证,允许为空,为空启用默认提示
     *
     * 验证规则:
     * 额外的验证规则(为验证类型提供必要的参数)
     *
     * 验证条件 (默认为0):
     * 1表示必须验证,0表示存在即验证
     *
     * 其他参数:
     * 验证类型需要的其他参数(详见下面详细说明)
     * 默认所有的验证器都会被执行,不管验证成功与否。 我们可以通过设置 cancelOnFail 参数为 true 来指定某个验证器验证失败时中止以后的所有验证
     * 例如把其他参数设为['cancelOnFail' => true],表示失败后停止验证后面条件
     * 
     **************************************************************************************************
     *
     * 详细说明:
     * 当验证类型为:alnum、alpha、creditcard、digit、email、numericality、url
     * 必须验证:[验证字段,验证类型[,错误提示,'',1]] or 存在则验证:[验证字段,验证类型[,错误提示]]
     * 例:['username', 'alnum', '用户名必须为数字字母', '', 1] 表示必须验证用户名且必须为数字字母
     * 
     * 当验证类型为:between
     * [验证字段,验证类型,错误提示,验证规则[,验证条件]] 注:验证规则为数组[最小值,最大值],例:[5,12]
     * 例:['age', 'between', '年龄必须在0-150岁之间', [0,150]]
     * 注:请特别注意null、''等值,因为是直接用>和<进行比较,如果区间有0存在,建议增加一个presenceof验证
     * 
     * 当验证类型为:callback
     * [验证字段,验证类型,错误提示,验证规则[,验证条件]] 注:验证规则为匿名函数
     * 例:
     * 在控制器中调用验证器的validate(var data = null, var entity = null)方法时,传递的是第一个参数,
     * 可以简单理解为:数据源如果是数组,则匿名函数的形参$data也是数组
     * ['age', 'callback', '年龄必须小于200', function($data){return isset($data['age']) && $data['age']<200 ? true:false; },1]
     * 
     * 在模型中,调用的是模型中的validate(<ValidationInterface> validator)方法
     * 而该模型方法中调用验证器的validate(var data = null, var entity = null)方法时传递的是validate(null, $this),即传递的是当前模型对象
     * 所以可以简单理解为:模型中验证的数据源是模型对象,所以匿名函数的形参$data为对象 
     * ['age', 'callback', '年龄必须小于210', function($data){$age = $da
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Phalcon 文文档 一般都是直接看英文资料,大都能看得懂。但看到Phalcon框架如此优秀,在学习后就想和大家分享,但发现国内的人几乎没有使用的,故想翻译一下,一旦翻译才发现读懂和译出一篇好文章真的不太一样。 故前一期翻译的部分章节有点生硬,等有空的时候再回头重译吧,后面的一部分也是以英文文档为基础,但并不再是逐句翻译了。 09年左右,大量的框架出现,我看过的框架不下20种,最先看到的可能就是php.MVC了,这是一个按照struts 1x编写的,只不过同时加载的类库太多了,效率不高而且不太完善。 后来稍有名的包括 cakephp, Symfony, Akelos, Prado, Kohana等,最近几年流行的就是 zf, yii, ci等,当然还有国内几个比较有名的框架,如fleaphp, thinkphp等。 在上面的一些框架,我比较感冒的还是ci,yii,thinkphp等。ci,thinkphp够简单,速度也不错。yii是生活在国外的华人开发,功能够全而强大,速度也不错,国内的应用也不少。 一直不太喜欢zf,记得几年前就和同行朋友聊天的时候说,像ZEND公司完全可以用C语言开发出一个扩展来,这样效率会高得多,为毛非得用PHP开发呢,事实被我验证了,但开发扩展的不是ZEND公司,而是国内一个PHP大鸟,人称鸟哥。这个框架就是非常出名的YAF,因此YAF扩展是我必装的扩展之一。同时这也是我发现的第一个C语言写的扩展框架。 但YAF的缺点是,功能非常不完善,在我看来只是简单实现了MVC结构及路由,分发等功能,像一些ORM之类的功能完全没有开发,作者好像也没有开发的意思:) 后来就发现了Phalcon,一看文档就爱上了她,功能,速度等都是我想要的,我花了一周时间看文档学习她,并在一个下午的过程,发现了文档的三个错误并提交了这些错误:),我决定为完善它也贡献一点自己的力量。 本文档的文地址存放在 http://phalcon.5iunix.net Github上的地址为: https://github.com/netstu/phalcondocs ,您如果发现有些地方译的有些操蛋,烦请你fork它,并完善她。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值