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 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 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
一个域名查询的程序
2006/10/09 PHP
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
浅析Python中的序列化存储的方法
2015/04/28 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Python自动登录QQ的实现示例
2020/08/28 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
教师应聘自荐信范文
2014/03/14 职场文书
好的旅游活动方案
2014/08/19 职场文书
2014年统计工作总结
2014/11/21 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
如何用python插入独创性声明
2021/03/31 Python