先上代码

class User extends CActiveRecord
{
    public function rules()
    {
        return array(
            array('username, email', 'required'),
            array('password, confirm_password', 'required', 'on'=>'create'),
            array('username', 'unique'),
            array('username, email', 'length', 'max'=>50),
            array('password, confirm_password', 'length', 'min'=>6, 'max'=>32),
            array('email', 'email'),
            array('confirm_password', 'compare', 'compareAttribute'=>'password', 'on'=>'create,update'),
            array('id, username, password, email', 'safe', 'on'=>'search'),
        );
    }
}

该方法是在模型(activeRecord、FormModel)中重写了CModel的rules方法, 其中on对应的值就是场景,如果on 选项未设置,则此规则会应用于所有场景。

也就是说该rules有3个场景:create, update, search。

定义好场景后我们可以在控制器的action中调用刚才定义好的场景

public function actionAdmin()
{
    $model=new User('create');
}

当我们调用CModel::validate() 或者CModel::save()的时, 系统就会验证email的格式是否正确,

confirm_password、password的值是否为空以及他们是否相等, 以及其他的验证

如果此文中有不对或不足的地方, 请大家多多指教

Yii的场景的更多相关文章

  1. yii 定义场景

    定义场景可以限制对字段的增删改查操作

  2. yii框架场景的用法

    1.在 model 里面定义一下场景 类名必须是 scenarios() public function scenarios() { return [ 'create' => ['title', ...

  3. YII场景

    YII在模型中定义场景后 public function scenarios(){//场景 return [ 'sco1'=>['aid','uphone'], 'sco2'=>['aid ...

  4. 为speedphp最新版添加 仿Yii 的简易版 数据验证 支持不同场景,自定义回调

    给个意见或建议吧 扩展一个Model基类 <?php class BaseModel extends Model{ use ValidationRules; public function ru ...

  5. yii事件

    控制器: public function actionTests1(){ $c = new \app\components\cat(); $m = new \app\components\mou; $ ...

  6. Yii的学习(4)--Active Record

    摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar 在官网原文的基础上添加了CDbCriteria的详细用法. 虽然 ...

  7. Yii的学习(2)--数据访问对象 (DAO)

    摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO) ...

  8. 在yii中使用多个数据库

    背景: 对于一个大公司拥有多个分公司的应用场景下,我们通常需要配置多个sub-database(子数据库)来存储不同的数据纪录. 配置步骤: 1.在application骨架里面的主配置文件main. ...

  9. Yii2学习笔记之场景

    场景 一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则.例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录 ...

随机推荐

  1. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...

  2. 2015第6周三ztree的使用

    今天第一次真正在开发中使用了ztree组件,在实践过程体会了从生到熟的乐趣,从开始看不太懂ztree的api到后面熟悉理解其API布局,学习其中的各demo,感觉很不错,简单记录下使用ztree的经验 ...

  3. 如何将Oracle安装为Linux服务

    方法一:使用oracle自带的启动和关闭脚本 1. oracle用户修改/etc/oratab 文件: $ vi /etc/oratab orcl:/oracle/app/product/10.2.0 ...

  4. A Knight's Journey 分类: dfs 2015-05-03 14:51 23人阅读 评论(0) 收藏

    A Knight’s Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34085 Accepted: 11621 ...

  5. paip.vs2010 或.net 4.0安装出错解决大法.

    paip.vs2010 或.net 4.0安装出错解决大法. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.cs ...

  6. WordPress中文汉字username不能注冊怎么办?

    WordPress注冊用户是不支持中文的.可是近期在项目中须要用到中文注冊. 后来想到了简单的处理办法: 打开 wp-includes/formatting.php.找到 function sanit ...

  7. Mobile Web开发 处理设备的横竖屏

    为了应对移动设备屏幕的碎片化,我们在开发Mobile Web应用时,一个最佳实践就是采用流式布局,保证最大可能地利用有限的屏幕空间.由于屏幕存在着方向性,用户在切换了屏幕的方向后,有些设计上或实现上的 ...

  8. Android(一)

    Android Activity TextView,Button 1.在fragment_main.xml文件中直接添加控件 2.在MainActivity.java文件中添加TextView控件 在 ...

  9. ProgressBar、RatingBar和Spinner控件

    1.ProgressBar.SeekBar与RatingBar控件 ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等.SeekBar控件,滑块控件,可以根据用户的需要动态为 ...

  10. UVa 202 - Repeating Decimals

    给你两个数,问你他们相除是多少,有无限循环就把循环体括号括起来 模拟除法运算 把每一次的被除数记下,当有被除数相同时第一个循环就在他们之间. 要注意50个数之后要省略号...每一次输出之后多打一个回车 ...