Yiiframwork应用小窍门
作者:雪莲2007019 | 来源:互联网 | 2023-10-17 16:23
Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码
Yii framework 应用小窍门
1. Yii Framework] 如何获取当前controller的名称?
下面语句就可以获取当前控制器的名称了!
Php代码
- Yii::app()->controller->id
2. yii 如何使用第三方插件 第一,比如说,我们要使用 Zendframework的东西。我们把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 创建
Php代码
- class UpdateAction extends CAction {
- public function run() {
-
- }
- }
调用
Php代码
- class PostController extends CController {
- public function actions() {
- return array( 'edit'=>'application.controllers.post.UpdateAction', );
- }
- }
5. Yii创建widget
Php代码
- 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, 应该这样,
8.Yii 如何在当前页面注册css和js文件 - $cs=Yii::app()->clientScript;
- $cs->registerCssFile($cssFile);
- $cs->registerScriptFile($jsFile);
9.Yii Captcha验证码的使用方法 假设使用的model名字为Comment Model里面
Php代码
- public function rules() {
- return array(
- ......
- array('verifyCode',
- 'captcha',
- 'on' => 'insert',
- 'allowEmpty' => !Yii::app()->user->isGuest || !extension_loaded('gd')),
- );
- }
View里面
10. 如何调用extension扩展 Components的方法 引入以及定义: 在config.php文件里面
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之后,可以直接这样:
Php代码
- 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();
这个是叫做namedscope, 每个命名范围被声明为一个可以被用来初始化CDbCriteria阵列实例。 如要下面的例子
Php代码
- 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里面:
Php代码
- class PostController extends Ccontroller {
- public function actionList(){....}
- public function getTitle(){return 'test title';}
- }
views的list.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'));
推荐阅读
-
本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ...
[详细]
蜡笔小新 2023-12-12 11:39:00
-
蜡笔小新 2023-12-14 19:14:56
-
-
本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ...
[详细]
蜡笔小新 2023-12-14 17:08:34
-
本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ...
[详细]
蜡笔小新 2023-12-13 20:24:11
-
本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ...
[详细]
蜡笔小新 2023-12-13 18:29:11
-
本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ...
[详细]
蜡笔小新 2023-12-10 18:30:17
-
MySQL 的 NULL 值是怎么存储的? ...
[详细]
蜡笔小新 2023-10-13 13:32:38
-
本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ...
[详细]
蜡笔小新 2023-12-13 20:46:48
-
本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ...
[详细]
蜡笔小新 2023-12-13 17:48:58
-
本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ...
[详细]
蜡笔小新 2023-12-13 13:12:05
-
本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ...
[详细]
蜡笔小新 2023-12-13 12:01:03
-
在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ...
[详细]
蜡笔小新 2023-12-13 11:29:38
-
本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ...
[详细]
蜡笔小新 2023-12-13 04:22:57
-
本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ...
[详细]
蜡笔小新 2023-12-12 20:00:06
-
本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ...
[详细]
蜡笔小新 2023-12-10 19:01:03
-