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. 每个字段多个规则

posted @ 2011-07-01 13:13  xhiyu  阅读(532)  评论(0编辑  收藏  举报