Yii中创建自己的Widget实例


Posted in PHP onJanuary 05, 2016

本文实例讲述了Yii中创建自己的Widget实现方法。分享给大家供大家参考,具体如下:

这里以一个随机广告图片为例说明Yii中Widget的用法

1. 调用Widget

<?php $this->widget('WidgetName'); ?>

或者
<?php $widget=$this->beginWidget('path.to.WidgetClass'); ?>
...可能会由小物件获取的内容主体...
<?php $this->endWidget(); ?>

也可以传参到Widget类

<?php $userId = 1; ?>
<?php $this->widget('WidgetName',array('userId'=>$userId)); ?>

参数userId自动映射到Widget类的同名属性,所以在定义Widget时,别忘记了声明该属性。

2. 创建Widget

自定义Widget类要继承CWidget,覆盖方法run

<?php
class BannerMagic extends CWidget {
  public function run(){
  }
}

或者:

class MyWidget extends CWidget {
  public function init() {
    // 此方法会被 CController::beginWidget() 调用
  }
   public function run() {
    // 此方法会被 CController::endWidget() 调用
  }
}

下面是是BannerMagicWidget实现

<?php class BannerMagicWidget extends CWidget {
  public function run() {
   $random = rand(1,3);
   if ($random == 1) {
    $advert = "advert1.jpg";
   } else if ($random == 2) {
    $advert = "advert2.jpg";
   } else {
    $advert = "advert3.jpg";
   } 
   $this->render('bannermagic',array(
    "advert"=>$advert,
   ));
  }
}

存储到protected\components\BannerMagicWidget.php

对应的view文件可能的内容如下:

<img src="images/adverts/<?php echo $advert; ?>" alt="whatever" />

存储到protected\components\views\bannermagic.php

3. 调用该Widget

<?php $this->widget('BannerMagicWidget'); ?>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+MYSQL的文章管理系统(二)
Oct 09 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
PHP 的 __FILE__ 常量
Jan 15 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
PHP 类相关函数的使用详解
May 10 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
解析PHP提交后跳转
Jun 23 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
php实现购物车功能(上)
Jul 23 #PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 #PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 #PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 #PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 #PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 #PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 #PHP
You might like
PHP实现MySQL更新记录的代码
2008/06/07 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
PHP Include文件实例讲解
2019/02/15 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
Python图像读写方法对比
2020/11/16 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
客户表扬信范文
2014/01/10 职场文书
银行类自荐信
2014/02/04 职场文书
总结表彰大会主持词
2014/03/26 职场文书
企业挂职心得体会
2014/09/10 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
助学贷款贫困证明
2014/09/23 职场文书
党员民主评议个人总结
2014/10/20 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL