`

CakePHP: 一些验证笔记

    博客分类:
  • PHP
 
阅读更多
CakePHP 2.x CookBook 中文版 第七章 模型 之 数据校验 http://www.cnblogs.com/matchless/archive/2013/02/20/2918541.html
一些规则关键字:
'rule'     => 'alphaNumeric',
'rule'       => 'email',
'rule'       => 'date',
'rule'    => array('between', 5, 15),
'rule'    => array('minLength', '8'),
'rule'    => array('maxLength', '8'),


'required' => true,
'allowEmpty' => true
一个例子:
class User extends AppModel {
    public $validate = array(
        'login' => array(
            'alphaNumeric' => array(
                'rule'     => 'alphaNumeric',
                'required' => true,
                'message'  => 'Alphabets and numbers only'
            ),
            'between' => array(
                'rule'    => array('between', 5, 15),
                'message' => 'Between 5 to 15 characters'
            )
        ),
        'password' => array(
            'rule'    => array('minLength', '8'),
            'message' => 'Minimum 8 characters long'
        ),
        'email' => 'email',
        'born' => array(
            'rule'       => 'date',
            'message'    => 'Enter a valid date',
            'allowEmpty' => true
        )
    );
}



1.简单的验证:
class User extends AppModel {
    public $validate = array(
        'login' => 'alphaNumeric',
        'email' => 'email',
        'born'  => 'date'
    );
}


2.一个字段的多个验证规则
    public $validate = array(
        'enp_name' => array(
            "minLength"=>array(
                "rule"=>array("minLength",1),
                "message"=>"至少输入一个文字"
            ),
            "maxLength"=>array(
                "rule"=>array("maxLength",3),
                "message"=>"名称的个数不能大于3个"
            )
        )
    );


3.单个规则:每个列一个规则
public $validate = array(
    'fieldName1' => array(
        'rule'       => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
        'required'   => true,
        'allowEmpty' => false,
        'on'         => 'create', // or: 'update'
        'message'    => 'Your Error Message'
    )
);


4.多个规则
public $validate = array(
    'fieldName' => array(
        'ruleName' => array(
            'rule' => 'ruleName',
            // 类似 on,required 等扩展键放在这里...
        ),
        'ruleName2' => array(
            'rule' => 'ruleName2',
            // 类似 on,required 等扩展键放在这里...
        )
    )
);


5.自定义校验规则
A:自定义校验正则表达式
public $validate = array(
     'login' => array(
         'rule'    => '/^[a-z0-9]{3,}$/i',
         'message' => 'Only letters and integers, min 3 characters'
     )
 );

B:添加自己的校验方法
class User extends AppModel {

    public $validate = array(
        'promotion_code' => array(
            'rule'    => array('limitDuplicates', 25),
            'message' => 'This code has been used too many times.'
        )
    );

    public function limitDuplicates($check, $limit) {
        // $check 的值: array('promotion_code' => 'some-value')
        // $limit 的值: 25
        $existing_promo_count = $this->find('count', array(
            'conditions' => $check,
            'recursive' => -1
        ));
        return $existing_promo_count < $limit;
    }
}


6.动态改变校验规则
A:添加新的校验规则
$this->validator()->add('password', 'required', array(
     'rule' => 'notEmpty',
     'required' => 'create'
 ));

B:链式多次调用 add 来创建多条所需的规则
// 在模型类中
$this->validator()
    ->add('password', 'required', array(
        'rule' => 'notEmpty',
        'required' => 'create'
    ))
    ->add('password', 'size', array(
        'rule' => array('between', 8, 20),
        'message' => 'Password should be at least 8 chars long'
    ));

C:一次性为单个列添加多条规则
$this->validator()->add('password', array(
    'required' => array(
        'rule' => 'notEmpty',
        'required' => 'create'
    ),
    'size' => array(
        'rule' => array('between', 8, 20),
        'message' => 'Password should be at least 8 chars long'
    )
));
分享到:
评论

相关推荐

    Learn CakePHP: With Unit Testing, 2nd Edition

    Learn CakePHP: With Unit Testing by Rādhārādhya Dāsa 2016 | ISBN: 1484212134 | English | 114 pages | EPUB | 1 MB Accelerate your development of PHP applications using the popular CakePHP web ...

    CakePHP :: Ajax Demo

    This is a simple demo of some of the AJAX helpers now available in CAKE. These helpers are directly modeled on Ruby On Rails. In fact, they were shamelessly ported from rails almost verbatim....

    CakePHP创建验证器

    ### CakePHP创建验证器 #### 一、简介 在Web应用开发中,数据验证是非常重要的环节之一,它能够确保用户提交的数据符合预期的格式和规则,从而提高应用程序的安全性和用户体验。CakePHP是一款非常流行的PHP框架,...

    cakephp:CakePHP:PHP快速开发框架-官方资料库

    通过Composer安装CakePHP ...$ composer require cakephp/cakephp 有关(最小/最大)PHP版本的详细信息,请参见。 运行测试 假设您使用介绍的方法之一在系统范围内安装了PHPUnit,则可以通过执行以下操作

    docker-cakephp:示例Dockerfile,用于在Docker容器中部署CakePHP应用程序,能够通过基于数据库的会话连接到远程数据库

    docker-cakephp:示例Dockerfile,用于在Docker容器中部署CakePHP应用程序,能够通过基于数据库的会话连接到远程数据库

    CakePHP:PHP快速开发框架-开源

    CakePHP 4.0.0 具有更新的应用程序骨架设计,带有简化的 API,使您的开发和应用程序更快。 虽然 4.0 包含许多重大更改,但我们准备了详尽的迁移指南,涵盖所有已弃用和删除的功能以及突出显示闪亮的新功能。 CakeDC...

    chosen-cakephp:用于 Harvest 选择库的 CakePHP 插件

    为 CakePHP 2 选择的助手 ChosenHelper是集成HarvestHQ一类CakePHP中2.检查选择框了HarvestHQ的的文档和使用。 变更日志 现已可用。 仔细检查以确保您不会永久升级。 例如:最新版本 (2.1.0) 包括与 CakePHP 2.0.x ...

    bootstrap-ui:CakePHP:透明地使用Bootstrap

    要求CakePHP 4.x Bootstrap 4.x npm 5.x jQuery 3.2+ Popper.js 1.x Fontawesome 5.x包括什么? FlashHelper(元素类型: error , info , success , warning ) FormHelper(对齐: default , inline , ...

    markdown-cakephp:CakePHP 的 Markdown 插件

    CakePHP 的 Markdown 插件 这个插件有助于在 CakePHP 中使用 PHP Markdown PHP Markdown 是 John Gruber 编写的程序的 PHP 端口。 “Markdown”是两件事:纯文本标记语法,以及将纯文本标记转换为 HTML 以便在网络...

    curso-cakephp:使用 CakePHP 框架的 Web 应用程序开发课程

    课程-cakephp 蛋糕PHP 使用 CakePHP 框架的 Web 应用程序开发课程

    moip-assinaturas-cakephp:CakePHP的Moip订阅

    CakePHP的Moip订阅Moip订阅CakePHP 插件说明 此插件使您可以将Moip Assinaturas的所有功能用于CakePHP开发的应用程序。 Moip Assinaturas允许您按照创建计划所选择的数量和间隔自动收费。手动安装下载最新版本的插件...

    gym-trainer-cakephp:cakephp-健身

    CakePHP应用程序框架 使用 3.0创建应用程序的框架。 框架源代码可以在这里找到: 。 安装 下载或更新composer self-update 。 运行php composer.phar create-project --prefer-dist cakephp/app [app_name] 。 ...

    Z-Ray-CakePHP:CakePHP 3.0的Z-Ray扩展

    Z-Ray-CakePHP CakePHP 3.0的Z-Ray扩展。 这将导致在浏览器中显示其他选项卡。 安装 创建一个根据需要命名的目录,并在其中添加此仓库的内容。 示例:(假设Zend Server的默认安装目录) /usr/local/zend/var/...

    Apress.Beginning.CakePHP.From.Novice.to.Professional.Jul.2008

    ### CakePHP:从新手到专业人士 #### 一、概述 《Beginning CakePHP: From Novice to Professional》是一本由David Golding编写的书籍,旨在帮助读者掌握CakePHP框架的使用方法,从基础知识入手,逐步过渡到高级...

    CakePHP PHP MVC框架

    **CakePHP:PHP MVC框架详解** CakePHP是一个广泛使用的开源PHP框架,它基于Model-View-Controller(MVC)架构模式,旨在简化Web应用程序的开发流程,提高开发效率,并且支持快速原型制作。这个框架以其易用性、可...

    phing-cakephp:这是CakePHP项目的phing配置

    phing-cakephp 介绍 这是CakePHP 2.x项目的phing配置。 Phing构建测试 ,检查代码质量( , , )并生成 。 安装PHP包 在进行配置之前,将PHP软件包安装到您的计算机上。 pecl install xdebug pear channel-...

    Lockable-CakePHP:CakePHP LockableBehavior用于通过Mutex和_或Redis进行并发锁定

    CakePHP的可锁定行为 使用MySQL的GET_LOCK()和RELEASE_LOCK()对任何模型进行简单的并发锁定。 它需要使用MySQL。 安装插件 cd yourprojectroot git clone ...

    MandrillTransport-CakePHP:这样可以将CakePHP 2.0中的CakeEmail与Mandrill结合使用

    Mandrill CakePHP插件这样可以将CakePHP 2.0中的CakeEmail与Mandrill结合使用。安装为Mandrill传输协议添加电子邮件配置。 将此添加到/app/Config/email.php 。 您可能会发现它名为email.php.default 。 public $...

Global site tag (gtag.js) - Google Analytics