下内容,多数为cakephp1.2手册内容。
模型的校验,本质上就是当你调用模型上的save()时所发生的事情。要学习怎么处理错误信息显示,请 查看FormHelper节的描述.
数据校验的第一步是创建模型校验规则。方法是在模型定义文件中使用Model::validate数组,例如:
- <?php
- class User extends AppModel {
- var $name = 'User';
- var $validate = array();
- }
- ?>
在上面的例子中, $validate数组被加入到了User模型,但是这个数组包含了校验规则。假设用户表有login, password, email和born字段,下面的例子告诉你怎么应用一些简单的规则到这些字段:
- <?php
- class User extends AppModel {
- var $name = 'User';
- var $validate = array(
- 'login' => 'alphaNumeric',
- 'email' => 'email',
- 'born' => 'date'
- );
- }
- ?>
上面的例子告诉你这些校验规则怎么加入到这些字段. 对于login字段, 仅仅接收数字和字符, email应该是一个有效的eamil并且born应该是一个有效的日期。当用户提交的数据不符合所定义的规则,CakePHP校验机制就能神奇地显示相 应的错误信息。
上述的实例较为简单,下面请看更加复杂的事例 。
- <?php
- class User extends AppModel {
- var $name = 'User';
- var $validate = array(
- 'login' => array( //login字段校验规则
- '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( //password字段规则
- 'rule' => array('minLength', '8'),
- 'message' => 'Mimimum 8 characters long'
- ),
- 'email' => 'email', //email字段规则
- 'born' => array( //born字段规则
- 'rule' => 'date',
- 'message' => 'Enter a valid date',
- 'allowEmpty' => true
- )
- );
- }
- ?>
代码说明:
1.login字段定义了两个校验规则:一个是alphanumeric,要求输入只能包含字母和数字,另一个规则是between, 要求输入的长度在5到15之间;
2.password字段要求最少8个字符;email应该是一个有效的email;
3.born必须是一个有效的日期。
4.注意上面 的例子还描述了当校验失败时如果显示定制的出错信息。
5.正像上面例子指出的,一个field可以有多个校验规则。并且如果内建规则不满足你的要求,你可以加自己的校验规则。
总结:
现在,你已经看到了校验规则的大概工作原理。让我们看看这些规则是怎么定义的吧。有3种方法定义校验规则:
1. 简单数组
2. 每个字段一个规则
3. 每个字段多个规则