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将数据导入到Foxmail
Oct 09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
javascript 跳转代码集合
2009/12/03 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
深入了解Python enumerate和zip
2020/07/16 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
儿科护士自我鉴定
2013/10/14 职场文书
护理医院见习报告
2014/11/03 职场文书
教师素质教育心得体会
2016/01/19 职场文书