• cakephp 数据校验


    下内容,多数为cakephp1.2手册内容。

    模型的校验,本质上就是当你调用模型上的save()时所发生的事情。要学习怎么处理错误信息显示,请 查看FormHelper节的描述.

    数据校验的第一步是创建模型校验规则。方法是在模型定义文件中使用Model::validate数组,例如:

    1. <?php
    2. class User extends AppModel {
    3. var $name = 'User';
    4. var $validate = array();
    5. }
    6. ?>

    在上面的例子中, $validate数组被加入到了User模型,但是这个数组包含了校验规则。假设用户表有login, password, email和born字段,下面的例子告诉你怎么应用一些简单的规则到这些字段:

    1. <?php
    2. class User extends AppModel {
    3. var $name = 'User';
    4. var $validate = array(
    5.   'login' => 'alphaNumeric',
    6.   'email' => 'email',
    7.   'born' => 'date'
    8. );
    9. }
    10. ?>

    上面的例子告诉你这些校验规则怎么加入到这些字段. 对于login字段, 仅仅接收数字和字符, email应该是一个有效的eamil并且born应该是一个有效的日期。当用户提交的数据不符合所定义的规则,CakePHP校验机制就能神奇地显示相 应的错误信息。

    上述的实例较为简单,下面请看更加复杂的事例 。

    1. <?php
    2. class User extends AppModel {
    3. var $name = 'User';
    4. var $validate = array(
    5.   'login' => array(   //login字段校验规则
    6. 'alphanumeric' => array(
    7. 'rule' => 'alphaNumeric',
    8. 'required' => true,
    9.  'message' => 'Alphabets and numbers only'
    10. ),
    11. 'between' => array(
    12. 'rule' => array('between', 5, 15),
    13. 'message' => 'Between 5 to 15 characters'
    14. )
    15. ),
    16.   'password' => array( //password字段规则
    17. 'rule' => array('minLength', '8'),
    18. 'message' => 'Mimimum 8 characters long'
    19. ),
    20.   'email' => 'email', //email字段规则
    21.   'born' => array(  //born字段规则
    22. 'rule' => 'date',
    23. 'message' => 'Enter a valid date',
    24. 'allowEmpty' => true
    25. )
    26. );
    27. }
    28. ?>

    代码说明:

    1.login字段定义了两个校验规则:一个是alphanumeric,要求输入只能包含字母和数字,另一个规则是between, 要求输入的长度在5到15之间;

    2.password字段要求最少8个字符;email应该是一个有效的email;

    3.born必须是一个有效的日期。

    4.注意上面 的例子还描述了当校验失败时如果显示定制的出错信息。

    5.正像上面例子指出的,一个field可以有多个校验规则。并且如果内建规则不满足你的要求,你可以加自己的校验规则。

    总结:

    现在,你已经看到了校验规则的大概工作原理。让我们看看这些规则是怎么定义的吧。有3种方法定义校验规则:

    1. 简单数组
    2. 每个字段一个规则
    3. 每个字段多个规则

  • 相关阅读:
    大型网站数据库架构分析
    Mysql 存储引擎中InnoDB与Myisam的主要区别
    设计模式培训之一:为什么要用单例模式?
    架构师成长之路
    hdoj1257 最少拦截系统
    hdoj2571 命运
    hdoj1010 Temperor of the bone
    hdoj1175 连连看
    ny220 推桌子
    ny168 房间安排
  • 原文地址:https://www.cnblogs.com/xhiyu/p/2095423.html
Copyright © 2020-2023  润新知