0%

CakePHP 模型中的数据校验规则

之前没学过任何框架,搞这个cakephp把我难住了,几乎花了一天时间,才有点头绪,简直比新学一门语言还要难。cakephp虽然有官方中文文档,但有些部分好像是机器翻译的,也许是我理解能力有点差,反正看不太懂。 这个校验规则官方文档也有,但那网站偶尔抽风,另外也让自己更熟悉一点,所以抄一下。官方文档地址:http://book.cakephp.org/1.3/cn/view/1152/%E6%A0%B8%E5%BF%83%E6%A0%A1%E9%AA%8C%E8%A7%84%E5%88%99 alphaNumeric :数据字段只能包括字母和数字。 between :输入数据的长度必须介于指定的数字范围以内。必须提供最小值与最大值。使用 blank :该规则确定字段为空或者值仅为空白字符。空白字符包括:空格、tab、回车符,以及换行符。 boolean:字符是布尔型,如true,false,0,1,’0’,’1’ cc:该规则用来校验数据是否为一个有效的信用卡号码。有三个参数:‘type’, ‘deep’ and ‘regex’. comparison:Comparison用来比较数字值。它支持“is greater”, “is less”, “greater or equal”, “less or equal”, “is less”, “equal to”, 和 “not equal”。 date:本规则确保数据以有效的日期格式提交。允许传入一个单独的参数(可以为数组)来校验提供日期的格式。 decimal:本规则确保数据为一个有效的小数。可以传入参数指定小数点后的数字位数。如果不传入参数,数据会以科学浮点数进行校验,如果小数点后无数字,则会校验失败。 email:检查数据是否为一个有效的email地址。第二个参数传入布尔值true,规则也会试图校验给定地址的主机地址是否有效。 equalTo:本规则确保数据与给定的值相等,且类型亦相同。 extension:本规则检查文件扩展名是否有效,如.jpg或.png等。允许以数组格式传入多个扩展名。 ip:本规则确保提交的是一个有效的IPv4地址 isUnique:字段值必须唯一,不能用于其它行。 minLength:本规则规定数据的最小长度。 maxLength:本规则规定数据的最大长度。 money:本规则确保值为一个有效的货币值。第二个参数定义货币符号在哪边(左边/右边) Multiple:用来校验多项选择输入。支持”in”, “max”和”min”等参数 inList:本规则确保值在给定的集合中。需要提供一个数组的值。如果值在给定数组中,则该字段有效。 numeric:检查传入的数据是一个有效的数字。 notEmpty:确保字段非空的基本规则。 phone:Phone检验美国的电话号码。如果要校验其它国家的电话号码,需要提供相应的正则表达式作为第二个参数。 postal:Postal用来校验美国(us), 加拿大(ca), 英国(uk), 意大利(it), 德国(de)和比利时(be)的邮政编码格式。对其它国家的邮政编码格式,需要定义相应的正则表达式作为第二个参数。 range:本规则确保值在指定的范围之内。如果未提供范围,规则会检查值是否符合当前平台定义。 ssn:Ssn校验美国(us), 丹麦(dk), 以及荷兰(nl)的社会保险号码。对于其它国家的社会保险号格式,需要提供相应的正则表达式。 url:本规则校验有效的URL格式。支持http(s), ftp(s), file, news以及gopher协议。 使用正则表达式校验规则:

    var $validate = array (
            'login' => array (
                    'rule' => array (
                            'custom',
                            '/^[a-z0-9]{3,}$/i' 
                    ),
                    'message' => 'Only letters and integers, min 3 characters' 
            ) 
    );

单个字段,匹配多个规则:

    var $validate = array (
            'login' => array (
                    'alphanumeric' => array (
                            'rule' => 'alphaNumeric',
                            'message' => 'Only alphabets and numbers allowed',
                            'last' => true 
                    ),
                    'minlength' => array (
                            'rule' => array (
                                    'minLength',
                                    '8' 
                            ),
                            'message' => 'Minimum length of 8 characters' 
                    ) 
            ) 
    );