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 相关文章推荐
自动跳转中英文页面
Oct 09 PHP
用PHP编写PDF文档生成器
Oct 09 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
Yii快速入门经典教程
Dec 28 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
PHP框架性能测试报告
May 08 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP7 标准库修改
Mar 09 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
CI框架给视图添加动态数据
2014/12/01 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript 继承实现方法
2009/08/26 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python轻松实现代码编码格式转换
2015/03/26 Python
python+opencv实现动态物体识别
2018/01/09 Python
Python使用gRPC传输协议教程
2018/10/16 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
python中time.ctime()实例用法
2021/02/03 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
有多年工作经验的自我评价
2014/03/02 职场文书
艺术节开幕词
2015/01/28 职场文书
辞职信如何写
2015/02/27 职场文书
工程技术员岗位职责
2015/04/11 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers