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 相关文章推荐
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP 7.0.2 正式版发布
Jan 08 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP-FPM的配置与优化讲解
Mar 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
php 如何获取数组第一个值
2013/08/06 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
Django 中 cookie的使用
2017/08/17 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python引用DLL文件的方法
2015/05/11 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
高二物理教学反思
2014/02/08 职场文书
住宅质量保证书
2014/04/29 职场文书
女生节标语
2014/06/26 职场文书
网吧温馨提示
2015/07/17 职场文书
学校运动会通讯稿
2015/07/18 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL