cakephp中如何使用数据校验

有三种方法:

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

对任何应用来说,数据校验都是非常重要的。它确保模型数据遵从应用的商业规则。例如,你可想你的向密码至少8个字符,或者确保用户名是唯一的。定义数据校验规则使得表单处理更加容易。

校验过程有有许多方面要考虑。这部分讲述的是模型的校验。本质上就是当你调用模型上的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校验机制就能神奇地显示相应的错误信息。

CakePHP内建了许多校验规则,使用他们是非常容易的。它们可以校验email格式、URLs和Credit - 稍候我们将学习他们。

下面是使用内建规则的一个更加复杂的例子:

<?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
    'login' => array(
    '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(
    'rule' => array('minLength', '8'),
    'message' => 'Mimimum 8 characters long'
    ),
    'email' => 'email',
    'born' => array(
    'rule' => 'date',
    'message' => 'Enter a valid date',
    'allowEmpty' => true
    )
    );
}
?>

login字段定义了两个校验规则:一个是alphanumeric,要求输入只能包含字母和数字,另一个规则是between, 要求输入的长度在5到15之间;password字段要求最少8个字符;email应该是一个有效的email;born必须是一个有效的日期。注意上面 的例子还描述了当校验失败时如果显示定制的出错信息。

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

转载于:https://my.oschina.net/adamboy/blog/17644

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值