YII--路径相关小技巧
2016-03-04 10:01
519 查看
YII知识小结:1.YII默认控制器为 SiteController 默认控制器可以通过配置文件
application/config/main.php修改,指定 defaultController即可, 如
'defaultController' => 'home',2.控制器的默认方法为actionIndex 可以通过定义控制器属性 defaultAction来设置,如 public
$defaultAction = 'lists';3.获取Controller ID Yii::app()->getController()->id 获取Action
ID Yii::app()->getController()->getAction()->id
类:system.web.CWebApplication4.获取POST参数 Yii::app()->request->getPost('name'); 获取GET参数
Yii::app()->request->getQuery('name');5.判断提交方式 Yii::app()->request->isPostRequestYii::app()->request->isAjaxRequest类:system.web.CHttpRequest6.view中导入js、css、Meta 类:system.web.CClientScript![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
7.生成URL可以使用 Yii::app()->createUrl('post/read', array('id'
=> 1))8.main.php引用其他配置文件可用'params'=>
require(dirname(__FILE__).'/params.php'),
params.php直接返回数组即可,如return
array();访问方式则为Yii::app()->params['paramName']9.数据在保存、查找、验证前后调用before、afeter方法,如:beforeSave、afterSave、beforeValidate![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
10.表单验证时可以指定应用场景,如$model = new Post('create')
或者通过$post->scenario = 'create' 指定11.获取http://127.0.0.1/test/index?var=val的内容:
12.判断是否为AJAX动作:
13.GET,POST,REQUEST
AR:数据库配置:![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
创建记录:
也可以直接POST给属性:
读取记录:![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
如上所示,我们通过 Post::model() 调用 find 方法。 请记住,静态方法 model() 是每个 AR
类所必须的。 此方法返回在对象上下文中的一个用于访问类级别方法(类似于静态类方法的东西)的 AR 实例。如果 find 方法找到了一个满足查询条件的行,它将返回一个 Post 实例,实例的属性含有数据表行中相应列的值。
然后我们就可以像读取普通对象的属性那样读取载入的值,例如 echo $post->title;。如果使用给定的查询条件在数据库中没有找到任何东西, find 方法将返回 null 。调用 find 时,我们使用 $condition 和 $params 指定查询条件。此处 $condition 可以是 SQL
语句中的 WHERE 字符串,$params 则是一个参数数组,其中的值应绑定到 $condation 中的占位符。例如:
改写:用数组直接取代$criteria,数组的键和值各自对应标准(criterion)的属性名和值
计数:
更新记录:
例如:
删除记录:
例如:
数据验证: 当调用 save()
时, AR 会自动执行数据验证。 验证是基于在 AR 类的 rules() 方法中指定的规则进行的。![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
将表单提交过来的数据赋值给AR属性:
简化:
使用 AR 处理事务每个 AR 实例都含有一个属性名叫 dbConnection ,是一个 CDbConnection 的实例,这样我们可以在需要时配合
AR 使用由 Yii DAO 提供的 事务 功能:![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
命名范围(named scope) 表示一个命名的查询规则,它可以和其他命名范围联合使用并应用于 Active Record
查询。用法:命名范围主要是在 CActiveRecord::scopes() 方法中以名字-规则对的方式声明。 如下代码在 Post
模型类中声明了两个命名范围, published 和 recently。![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
例子:查找最近发布的5篇帖子
***总体来说,(1)命名范围必须出现在一个 find 方法调用的左边。
(2)最终结果就像给一个查询添加了一系列过滤器。
(3)命名范围可用于 find,update 和 delete 方法。
(4)默认的命名范围(defaultScope())只会应用于 SELECT 查询。INSERT,
UPDATE 和 DELETE 查询将被忽略。
(5)命名范围只能用于类级别方法。也就是说,此方法必须使用 ClassName::model()
调用。在视图层(../views/..)添加CSS文件或JavaScript文件
批注1:在视图层引用与在控制层引用的方式一样。但在视图层中引用加载的要晚一些。批注2:引用路径是使用baseUrl,而不是basePath。批注3:关于参数CClientScript::POS_END,作用是延时加载,提高页面渲染效率。例如:Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl
. "/js/jqueryui/jquery-ui.min.js", CClientScript::POS_END);引入jquery核心部件:![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
2,yii方式引入![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
插入meta信息:
:Yii::app()->getController()->id;在view中得到当前action的ID方法
:Yii::app()->getController()->getAction()->id;yii获取ip地址 :Yii::app()->request->userHostAddress;yii判断提交方式 :Yii::app()->request->isPostRequest得到当前域名: Yii::app()->request->hostInfo得到proteced目录的物理路径 :YII::app()->basePath;获得上一页的url以返回 :Yii::app()->request->urlReferrer;得到当前url :Yii::app()->request->url;得到当前home url :Yii::app()->homeUrl得到当前return url :Yii::app()->user->returnUrl项目路径 :dirname(Yii::app()->BasePath)Yii::getPathOfAlias('webroot')
如果你自己有个目录下有些类或文件常用,可以在main.php的最上边定义一个路径别名,别名可以被翻译为其相应的路径。如果是多个可以在
main.php中的array中加一个配置如:'aliases'=>array( 'local'=>'path/to/local/'), 获取布局文件:$this->getLayoutFile('main');
application/config/main.php修改,指定 defaultController即可, 如
'defaultController' => 'home',2.控制器的默认方法为actionIndex 可以通过定义控制器属性 defaultAction来设置,如 public
$defaultAction = 'lists';3.获取Controller ID Yii::app()->getController()->id 获取Action
ID Yii::app()->getController()->getAction()->id
类:system.web.CWebApplication4.获取POST参数 Yii::app()->request->getPost('name'); 获取GET参数
Yii::app()->request->getQuery('name');5.判断提交方式 Yii::app()->request->isPostRequestYii::app()->request->isAjaxRequest类:system.web.CHttpRequest6.view中导入js、css、Meta 类:system.web.CClientScript
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
, 'Content-Type');
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
=> 1))8.main.php引用其他配置文件可用'params'=>
require(dirname(__FILE__).'/params.php'),
params.php直接返回数组即可,如return
array();访问方式则为Yii::app()->params['paramName']9.数据在保存、查找、验证前后调用before、afeter方法,如:beforeSave、afterSave、beforeValidate
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
或者通过$post->scenario = 'create' 指定11.获取http://127.0.0.1/test/index?var=val的内容:
Yii::app()->request->getUrl /test/index?::app()->request->getQueryStringvar=val
12.判断是否为AJAX动作:
Yii::app()->request->isAjaxRequest
13.GET,POST,REQUEST
Yii::app()->request->getParam('id');
AR:数据库配置:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
'db'=> ),
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
->save();
也可以直接POST给属性:
->save();
读取记录:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
);
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
类所必须的。 此方法返回在对象上下文中的一个用于访问类级别方法(类似于静态类方法的东西)的 AR 实例。如果 find 方法找到了一个满足查询条件的行,它将返回一个 Post 实例,实例的属性含有数据表行中相应列的值。
然后我们就可以像读取普通对象的属性那样读取载入的值,例如 echo $post->title;。如果使用给定的查询条件在数据库中没有找到任何东西, find 方法将返回 null 。调用 find 时,我们使用 $condition 和 $params 指定查询条件。此处 $condition 可以是 SQL
语句中的 WHERE 字符串,$params 则是一个参数数组,其中的值应绑定到 $condation 中的占位符。例如:
(':id'=>1));CDbCriteria:用$criteria实例作为find()的查询条件
改写:用数组直接取代$criteria,数组的键和值各自对应标准(criterion)的属性名和值
计数:
);
更新记录:
);
例如:
Post::model()->updateAll(('title'=>'hello'),'id=1');
删除记录:
);
例如:
Post::model()->deleteAll('id=:id',(':id'=>6));
数据验证: 当调用 save()
时, AR 会自动执行数据验证。 验证是基于在 AR 类的 rules() 方法中指定的规则进行的。
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
}
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
->save();
简化:
->save();
使用 AR 处理事务每个 AR 实例都含有一个属性名叫 dbConnection ,是一个 CDbConnection 的实例,这样我们可以在需要时配合
AR 使用由 Yii DAO 提供的 事务 功能:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
查询。用法:命名范围主要是在 CActiveRecord::scopes() 方法中以名字-规则对的方式声明。 如下代码在 Post
模型类中声明了两个命名范围, published 和 recently。
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
,
'recently'=>
,
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
=Post::model()->published()->recently()->findAll();
***总体来说,(1)命名范围必须出现在一个 find 方法调用的左边。
(2)最终结果就像给一个查询添加了一系列过滤器。
(3)命名范围可用于 find,update 和 delete 方法。
(4)默认的命名范围(defaultScope())只会应用于 SELECT 查询。INSERT,
UPDATE 和 DELETE 查询将被忽略。
(5)命名范围只能用于类级别方法。也就是说,此方法必须使用 ClassName::model()
调用。在视图层(../views/..)添加CSS文件或JavaScript文件
批注1:在视图层引用与在控制层引用的方式一样。但在视图层中引用加载的要晚一些。批注2:引用路径是使用baseUrl,而不是basePath。批注3:关于参数CClientScript::POS_END,作用是延时加载,提高页面渲染效率。例如:Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl
. "/js/jqueryui/jquery-ui.min.js", CClientScript::POS_END);引入jquery核心部件:
Yii::app()->clientScript->registerCoreScript('jquery');批注:不论在页面中的何种位置引用,最终yii会将jquery.js文件放入yii的assets文件夹下。即/projectName/assets/82qg58/jquery-1.6.1.min.js。一、在../layouts/main.php中引入1,直接引入
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/jqueryui/jquery-ui.min.js", CClientScript::?>
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
Yii::app()->clientScript->registerMetaTag('keywords','关键字'::app()->clientScript->registerMetaTag('author','作者');获取网站路径等小元素在view中得到当前controller的ID方法
:Yii::app()->getController()->id;在view中得到当前action的ID方法
:Yii::app()->getController()->getAction()->id;yii获取ip地址 :Yii::app()->request->userHostAddress;yii判断提交方式 :Yii::app()->request->isPostRequest得到当前域名: Yii::app()->request->hostInfo得到proteced目录的物理路径 :YII::app()->basePath;获得上一页的url以返回 :Yii::app()->request->urlReferrer;得到当前url :Yii::app()->request->url;得到当前home url :Yii::app()->homeUrl得到当前return url :Yii::app()->user->returnUrl项目路径 :dirname(Yii::app()->BasePath)Yii::getPathOfAlias('webroot')
如果你自己有个目录下有些类或文件常用,可以在main.php的最上边定义一个路径别名,别名可以被翻译为其相应的路径。如果是多个可以在
main.php中的array中加一个配置如:'aliases'=>array( 'local'=>'path/to/local/'), 获取布局文件:$this->getLayoutFile('main');
相关文章推荐
- PHP VC9、VC6、Thread S…
- PHP之APC缓存详细介绍(学习整理)
- php ob_start()、ob_end_flus…
- PHP5 session 详解【经典】
- MySQL 存储php中json_encode…
- php的setcookie使用详解
- php get_magic_quotes_gpc()…
- yii framework(一)入口分析
- YII解析:Module模块使用
- PHP使用fopen与file_get_contents读取文件实例分享
- php获取数据为什么curl获取不完整
- 关于Yaf响应输出的总结
- 探讨捕获php错误信息方法的详解
- PHP $_SERVER详解
- PHP函数补完:session_name()
- php利用syslog函数分布式将log集中…
- Yii,验证码内置验证码调用
- PHP的事务处理机制
- PHP开源框架Yaf安装(Windows&nbsp…
- PHP的线程安全ZTS与非线程(NTS)安…