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 中文和编码判断代码
May 16 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
header跳转和include包含问题详解
Sep 08 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
php实现简单洗牌算法
Jun 18 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
php插入含有特殊符号数据的处理方法
Nov 24 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 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
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
YII路径的用法总结
2014/07/09 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
js转义字符介绍
2013/11/05 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
Python中的zip函数使用示例
2015/01/29 Python
Python中list初始化方法示例
2016/09/18 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
20岁生日感言
2014/01/13 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
《去年的树》教学反思
2016/02/18 职场文书
python中的3种定义类方法
2021/11/27 Python
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
js判断两个数组相等的5种方法
2022/05/06 Javascript
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers