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 相关文章推荐
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
PHP json_decode函数详细解析
Feb 17 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP常用算法和数据结构示例(必看篇)
Mar 15 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
PHP重载基础知识回顾
Sep 10 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 cli 小技巧
2013/06/03 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
js控制框架刷新
2008/08/01 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
Python基础教程之利用期物处理并发
2018/03/29 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python实现图片压缩代码实例
2019/08/12 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
Python3列表List入门知识附实例
2020/02/09 Python
python的pip有什么用
2020/06/17 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
String和StringBuffer的区别
2015/08/13 面试题
2014婚礼司仪主持词
2014/03/14 职场文书
学校安全责任书
2014/04/14 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
食品工程专业求职信
2014/06/15 职场文书
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python