`
mmdev
  • 浏览: 13295997 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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

    CakePHP创建验证器

    本文档将详细介绍如何在CakePHP中创建验证器,以及如何使用这些验证器进行数据验证。我们将通过一个具体的示例来展示整个过程,包括如何定义验证规则、如何在控制器中使用验证器,以及如何处理验证错误。 #### 二、...

    CakePHP PHP MVC框架

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

    cakephp-1.3.21.zip

    1. 数据验证:提供内置的验证规则,可轻松确保输入数据的有效性,减少程序错误。 2. 蛋糕式路由:自动映射URL到控制器方法,简化URL管理和路由配置。 3. 自动化 CRUD:支持快速创建、读取、更新和删除数据,降低...

    cakephp-cakephp-2.0.0-beta-0-g402934f.zip

    9. **自动验证(Validation)**:提供了数据验证规则,确保输入数据的正确性和安全性。 10. **错误处理和日志记录**:优雅地处理异常,记录系统事件,便于调试和问题定位。 通过使用CakePHP,开发者可以快速构建...

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

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

    CakePHP框架指南

    5. 数据验证和过滤:CakePHP提供了强大的数据验证工具,确保输入数据的有效性,同时还有过滤功能用于清理数据。 6. 插件系统:CakePHP框架支持插件,这是一种可以添加额外功能的代码包。用户可以通过安装插件来扩展...

    cakephp 框架书籍 英文版

    ### CakePHP框架书籍知识点概述 #### 一、Getting Started(开始使用) - **博客教程**:本书籍通过一个博客项目的示例,引导读者逐步了解CakePHP框架的基本用法。这包括了如何设置环境、创建模型(Model)、控制器...

    cakephp 框架1.3.11版本

    5. **验证**:CakePHP内置了强大的验证机制,可以方便地对用户输入进行检查,确保数据的安全性和完整性。 6. **烤箱**(Bake):这是CakePHP自带的一个工具,可以自动生成模型、控制器、视图等基础代码,加快开发...

    cakephp-1.2 manual

    9. **验证(Validation)**:手册会介绍如何在模型中设置数据验证规则,确保用户输入的数据符合要求。 10. **调试与性能优化**:学习如何使用 CakePHP 的调试模式进行问题排查,以及如何进行性能优化,如使用缓存和...

    phpmvc框架cakephp

    2. **验证**:框架内置的数据验证机制帮助确保输入数据的正确性和安全性。 3. **烤饼规则(Baking)**:CakePHP的Bake工具可以自动生成控制器、模型、视图等文件,加速开发进程。 4. **安全**:CakePHP包含CSRF...

    cakePHP完整实例

    - 添加数据验证,确保事项标题不能为空。 - 实现删除功能,允许用户移除不再需要的事项。 - 支持按照完成状态分类显示事项。 - 调整模型中的时间字段格式,增强可读性。 - 构建主页,集成各项功能,提供良好的...

    CakePHP 3.4 开发手册文档 CakePHP Cookbook Documentation Release 3.4

    3. **模型**:控制器可能会调用模型来进行数据操作,例如查询数据库、验证数据等。 4. **视图**:最后,控制器将处理好的数据传递给视图层进行渲染,然后返回给客户端。 #### 入门指南 **快速启动指南**提供了对 ...

    cakephp 框架

    1. Model:模型层是数据处理的核心,负责与数据库交互,处理业务逻辑和数据验证。开发者可以创建数据模型来代表数据库中的表,通过ORM(对象关系映射)实现数据库操作。 2. View:视图层负责展示用户界面,通常包含...

    cakephp手册完整打印版

    通过这份详尽的手册,无论是初学者还是有经验的开发者,都能深入理解并掌握CakePHP框架的核心概念和实际应用技巧。无论是在项目开发初期的规划阶段,还是在后期的维护和优化中,它都将是一份宝贵的参考资料。

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

    - 数据验证:CakePHP提供了一套强大的验证机制,可以帮助开发者确保数据的有效性。 - 分页处理:对于大数据量的应用场景,如何利用分页功能来优化用户体验。 - 自动布局:CakePHP支持自动布局功能,可以轻松地为...

    CakePHP 框架模板 v2.02

    7. **Validation**:内置的数据验证机制,确保输入数据的有效性和安全性。 ### 三、版本2.02的特点 蛋糕PHP 2.02版本是2.x系列的一个稳定版本,它主要包含了以下改进和优化: 1. **性能提升**:针对2.x系列的性能...

    cakephp中文手册API

    CakePHP提供了一套完整的表单处理机制,包括自动验证、数据填充以及错误处理,简化了Web应用中的表单交互。 12. **错误处理与日志(Error Handling & Logging)**: CakePHP内置了错误处理和日志记录机制,确保...

Global site tag (gtag.js) - Google Analytics