`
buliedian
  • 浏览: 1194578 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

CAKEPHP: 唯一性数据验证任务不能正常工作

阅读更多

遇到如下情况: 想要验证某个字段的合法性,

包含两条规则,一条是CakePHP自带的isUnique方法用来检查该字段在数据库中的唯一性

另外一条是限制该字段的输入字符集

public $validate = array(
'slug' => array(
'isUnique' => array(
'rule' => array('isUnique'),
'message' => 'This slug has already been taken.',
),
'charsAllowed' => array(
'rule' => '/^[a-z0-9_-\s]{1,}$/i',
'message' => 'Slug can only be alpha,number,space,_,-'
),
),
);

看起来没问题,实际第一个isUnique验证规则不能正常工作。

原因是CAKEPHP默认Model自带的isUnique方法中为字段查询语句自动添加了OR条件,

而OR条件在当前CAKEPHP版本不能像CAKEPHP book中所述的那样工作。

解决方法是定制自己的唯一性检查, 验证规则修改如下:

public $validate = array(
'slug' => array(
'slug' => array(
//overwrite the cake's default method isUnique,
//as the OR condition didn't work as expected
'rule' => array('unique',false),
'message' => 'This slug has already been taken.',
),
'charsAllowed' => array(
'rule' => '/^[a-z0-9_-\s]{1,}$/i',
'message' => 'Slug can only be alpha,number,space,_,-'
),
),
);

function unique($con, $or) {

......

return ($this->find('count', array('conditions' => $con, 'recursive' => -1)) == 0);

}

分享到:
评论

相关推荐

    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....

    Beginning CakePHP:From Novice to Professional

    Lead you from a basic setup of CakePHP to building a couple applications that will highlight CakePHPs functionality and capabilities without delving too deeply into the PHP language, but rather ...

    CakePHP创建验证器

    使用CakePHP框架如何创建验证器的文档。验证器可以通过在控制器中加入以下代码被创建,一旦创建了验证器,我们就可以使用验证器实例验证数据。

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

    是PHP的快速开发框架,它使用诸如联合数据映射,前端控制器和MVC之类的众所周知的设计模式。 我们的主要目标是提供一个结构化的框架,该框架使所有级别PHP用户都可以快速开发健壮的Web应用程序,而不会损失灵活性。 ...

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

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

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

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

    cakephp-containable行为behaviour

    join ‘other model’ 来指定具体的关联模型进行自定义查询 如果不需要关联数据的情况就不使用join方法 这样就避免了上面问题的产生 2:cakephp中虽然对模型的操作方法中并没有提供像上面提到的连贯方法 但是cake...

    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 , ...

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

    例如:最新版本 (2.1.0) 包括与 CakePHP 2.0.x 的向后兼容性中断。 安装 选择 CakePHP 2 插件支持和 。 composer.phar 并将其放入路径后: Composer 将负责将插件安装到正确的位置。 在path/to/app包含以下...

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

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

    markdown-cakephp:CakePHP 的 Markdown 插件

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

    cakephp php-framework

    There are two main ways to get a fresh copy of CakePHP. You can either download an archive copy (zip/tar.gz/tar.bz2) from the main website, or check out the code from the git repository. To download ...

    gym-trainer-cakephp:cakephp-健身

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

    cakephp 框架

    cakephp 框架 cakephp 框架 cakephp 框架 cakephp 框架 cakephp 框架

    cakephp-captcha:CakePHP 验证码实现

    使用随机文本alpha|math生成需要人工验证的图像。 这是为了防止自动垃圾邮件和垃圾邮件机器人。 特征: 多种验证码类型alpha|math 支持文字旋转 可以设置图像的宽度和高度尺寸 字体大小可以调整 生成时使用随机等...

    PHP的框架之CakePHP-CakePHP教程

    打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件.zip

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...

    moip-assinaturas-cakephp:CakePHP的Moip订阅

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

    CakePHP 2.10.6.zip

    CakePHP是一个快速开发PHP的开发框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data ...CakePHP 2.10.6 更新日志:2017-12-29修复在验证::电子邮件()中不起作用的回退域查找;改进的API文档。

Global site tag (gtag.js) - Google Analytics