Yii的场景
先上代码
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的场景的更多相关文章
- yii 定义场景
定义场景可以限制对字段的增删改查操作
- yii框架场景的用法
1.在 model 里面定义一下场景 类名必须是 scenarios() public function scenarios() { return [ 'create' => ['title', ...
- YII场景
YII在模型中定义场景后 public function scenarios(){//场景 return [ 'sco1'=>['aid','uphone'], 'sco2'=>['aid ...
- 为speedphp最新版添加 仿Yii 的简易版 数据验证 支持不同场景,自定义回调
给个意见或建议吧 扩展一个Model基类 <?php class BaseModel extends Model{ use ValidationRules; public function ru ...
- yii事件
控制器: public function actionTests1(){ $c = new \app\components\cat(); $m = new \app\components\mou; $ ...
- Yii的学习(4)--Active Record
摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar 在官网原文的基础上添加了CDbCriteria的详细用法. 虽然 ...
- Yii的学习(2)--数据访问对象 (DAO)
摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO) ...
- 在yii中使用多个数据库
背景: 对于一个大公司拥有多个分公司的应用场景下,我们通常需要配置多个sub-database(子数据库)来存储不同的数据纪录. 配置步骤: 1.在application骨架里面的主配置文件main. ...
- Yii2学习笔记之场景
场景 一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则.例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录 ...
随机推荐
- jsp 2种include标签的区别
众所周知,jsp中有2种标签用于包含其他jsp或者文件 1.include指令,其实是java代码 <%@ include file="xxx.jsp"%> 2.jsp ...
- Mysql 利用multiline 实现多行匹配
<pre name="code" class="html">input { file { type => "zj_mysql&quo ...
- NODE.JS安装配置
- JOSM学习下载地址
JOSM is an extensible editor for OpenStreetMap (OSM) written in Java 7. Currently it supports load ...
- bat命令学习笔记
1.一般在开始声明 setlocal enabledelayedexpansion 设置本地为延迟扩展.其实也就是:延迟变量,全称延迟环境变量扩展,使得批处理能够感知到变量的动态变化,在运行过程中给变 ...
- Lotto(dfs)
Lotto Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Submis ...
- 【dfs or 最短路】【HDU1224】【Free DIY Tour】
路径只能由小序号到大序号..(起点可以视为最小的序号和最大的序号) 问怎么走 happy值最大.. DFS N=100 且只能小序号到大序号 显然dfs可以过.. 但是存路径的时候sb了.....应该 ...
- win7启动后报丢失nscmk.dll解决解决方式
1.根据当前计算机选择下载64位或者32位nscmk.dll 2.拷贝nscmk.dll到相路径(32位:%windir%\system32\:64位:%windir%\SysWOW64\nscmk. ...
- Sublime 学习记录(五) Sublime 其他插件(个人喜好)
(一) JSFormat 安装 :命令面板 pci 回车 JSFormat 回车 功能 : javascript的代码格式化插件 简介 : 很多网站的JS代码都进行了压缩,一行式的甚至混淆压缩,这让 ...
- Silverlight学习笔记之页面跳转
在进行项目开发的时候,经常遇到页面之间的跳转,包括silverlight之间以及silverlight和html之间的跳转. silverlight之间的页面跳转包含两点: 1.主窗体和子窗体 用户新 ...