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类
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
一个图形显示IP的PHP程序代码
Oct 19 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
php判断访问IP的方法
Jun 19 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JS实现简单日历特效
2020/01/03 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
车辆工程专业求职信
2014/06/14 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
详解Python中的进程和线程
2021/06/23 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript