Yii framework_应用小窍门总结_Yii_Tips
Yii 中如何获得application,其是yii的应用核心,相当于rails的application。
1. Yii Framework] 如何获取当前controller的名称和action的名字?
-
Yii::app()->controller->id
$this->getAction()->getId();
//因为是yii么,可以这么写
$this->action->id;
2. yii 如何使用第三方插件
第一,比如说,我们要使用 Zend framework的东西。我们把zend framework解压到 prtected/vendors里面,现在的文件夹为 protected/vendors/Zend/Search/Lucene.php
第二,在controller文件的头部,插入下面代码。
Yii::import('application.vendors.*');
require once('Zend/Search/Lucene.php');
上面代码包含了Lucene.php这个类文件。因为我们用到的是相对路径,所以我们需要改变PHP加载文件的路径,Yii::import 一定要在require_once 之前。
第三,一旦我们设置好了,我们就可以在controller里面使用了。比如说
$lucene=new Zend Search Lucene($pathOfIndex);
$hits=$lucene->find(strtolower($keyword));
3. yii中如何在查询的时候使用数据库函数
比如要使用mySQL中的md5函数,
Test::model()->findAll(new CDbExpression("md5(name) =1"));
4. yii的controller中外挂action
创建
-
class
UpdateAction
extends
CAction {
-
public
function
run() {
-
-
}
-
}
调用
-
class
PostController
extends
CController {
-
public
function
actions() {
-
return
array
(
'edit'
=>
'application.controllers.post.UpdateAction'
, );
-
}
-
}
5. Yii创建widget
-
class
MyWidget
extends
CWidget {
-
public
function
init() {
-
-
}
-
public
function
run() {
-
-
}
-
}
通常,widget的视图是是放在components/views里面的,通过CWidget::render()来传递参数的
6. CWidget::init()与CWidget::run()的联系
要创建一个新的挂件(widget),我们主要是要继承两个方法:CWidget::init()和 CWidget::run(),
CWidget::init 调用是发生在我们使用 $this->beginWidget 将挂件插入到一个view里面,
CWidget::run 调用是发生在我们使用 $this->endWidget 这个方法的时候。
如果我们想捕捉和处理两者之间的方法核查办上显示的内容,我们可以在CWidget::init开始输出缓冲,然后在CWidget::run中检索缓冲输出
并作进一步处理。
7. Yii如何使用theme
在main.php 里面配置
return array(
'theme'=>'basic',
//......
);
要使用theme里面的资源的话,比如说images, js, css, 应该这样, Yii::app()->theme->baseUrl.”/images/FileName.gif”
Yii::app()->Theme->baseUrl.”/css/default/common.css”
8.Yii 如何在当前页面注册css和js文件
$cs=Yii::app()->clientScript;
$cs->registerCssFile($cssFile);
$cs->registerScriptFile($jsFile);
9.Yii Captcha验证码的使用方法
假设使用的model名字为Comment
Model里面
-
public
function
rules() {
-
return
array
(
-
......
-
array
(
'verifyCode'
,
-
'captcha'
,
-
'on'
=>
'insert'
,
-
'allowEmpty'
=> !Yii::app()->user->isGuest || !
extension_loaded
(
'gd'
)),
-
);
-
}
View里面
<form action=”/test/xyz” method=”post”>
<input type=”text” name=”comment[verifyCode]”/>
</form>
Controller里面
public function xyz() {
$comment = new Comment;
$comment->validate('insert');
//因为是insert的时候才会用到captcha,所以要加上参数'insert'
}
10. 如何调用extension扩展
Components的方法
引入以及定义:
在config.php文件里面
-
'components'
=>
array
(
-
'xyz'
=>
array
(
-
'class'
=>
'ext.xyz.XyzClass'
,
-
'property1'
=>
'value1'
,
-
'property2'
=>
'value2'
,
-
),
-
-
),
使用方法:
在任何地方,使用Yii::app()->xyz,就可以直接使用xyz这个component了,而component的加载方式是
lazilycreated的,只要我们不是在preload=array()里面定义,那么就是,当第一次使用的时候,才会实例化的,所以不用担心说把
它放在config.php里面会影响性能。
11. Yii 数据保存时自动插入createTime和updateTime
Yii 1.1 version之后,可以直接这样:
-
public
function
behaviors(){
-
return
array
(
-
'CTimestampBehavior'
=>
array
(
-
'class'
=>
'zii.behaviors.CTimestampBehavior'
,
-
'createAttribute'
=>
'create_time_attribute'
,
-
'updateAttribute'
=>
'update_time_attribute'
,
-
)
-
);
-
}
如果model里面已经在使用public function behaviors(),记得要在前面加上parent::behaviors($on);
12. Yii 数据库查询找出最新5个发布的内容
在数据查询的时候,出现下面的是什么意思?
$posts=Post::model()->published()->recently()->findAll();
这个是叫做named scope,
每个命名范围被声明为一个可以被用来初始化CDbCriteria阵列实例。
如要下面的例子
-
class
Post
extends
CActiveRecord {
-
......
-
public
function
scopes() {
-
return
array
(
-
'published'
=>
array
(
-
'condition'
=>
'status=1'
,
-
),
-
'recently'
=>
array
(
-
'order'
=>
'createTime DESC'
,
-
'limit'
=>5,
-
),
-
);
-
}
-
}
而$posts=Post::model()->published()->recently()->findAll();的意思就是找出最新的status为1的post的5条记录
13. 在views里面如何调用本controller的方法,获取一定的值
直接在views里面使用$this->method(),如
controller里面:
-
class
PostController
extends
Ccontroller {
-
public
function
actionList(){....}
-
public
function
getTitle(){
return
'test title'
;}
-
}
views的list.php
<?php echo $this->getTitle();?>
这样就可以调用本controller的方法了
14. Yii framework已经定义的命名空间常量
system: Yii framework directory
application: application's base directory
webroot: the directory containing the entry script file
ext: directory of extensions
system: 指向 Yii 框架目录;
zii: 指向 zii library 目录;
application: 指向应用程序 基本目录(base directory);
webroot: 指向包含里 入口脚本 文件的目录. 此别名自 1.0.3 版起生效.
ext: 指向包含所有第三方扩展的目录, 从版本 1.0.8 可用;
15. yii中如何不加载layout
可以使用renderPartial()来代替render()
16. yii中向widget传值
$this->widget('CMaskedTextField',array('mask'=>'99/99/9999'));
主要参考:http://koda.iteye.com/blog/1134712 有增加和修改
+
-
*
/
==结束==
/
*
-
+
分享到:
相关推荐
很好的工具书和代码 yii1.1_application_development_cookbook_code.zip ,适用于yii和php学习
Yii Framework API手册 英文原版
Yii_PHP_Framework 实用入门教程
yii framework框架 + yii app模板(基本、高级)
agile_web_application_development_with_yii1.1_and_php5_code.zip
Yii 框架 php编程框架 MVC 十分简洁方便的开发框架
agile_web_application_development_with_yii1.1_and_php5.tgz
Yii Framework 1.1.6 框架
Yii_PHP_框架源码分析 Yii_PHP_框架源码分析 Yii_PHP_框架源码分析 Yii_PHP_框架源码分析
食谱yiiframework.ru 该存储库用于处理。 请求请求非常受欢迎。 您可以有关如何编写自己的配方。
从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。 Yii是一个高性能的PHP5的...
Yii Framework是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
yii_rapid_application_development_hotshot.zip
yii rbac 插件模块,进行权限控制,非常方便
yii framework 中文完全手册
Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。 名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义, 也可看作 Yes It Is! 的缩写。
PhpStorm6 创建yii framework项目全过程。
yii framework 1.1.14 chm文档,从官方html文档编译,展示效果很好.
Yii Framework 1.10的API手册