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扩展函数
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Nov 25 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
学习PHP的数组总结【经验】
May 05 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
php json转换相关知识(小结)
Dec 21 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开发入门教程之面向对象
2006/12/05 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
深入php内核之php in array
2015/11/10 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
python爬虫请求头设置代码
2020/07/28 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
五年级科学教学反思
2014/02/05 职场文书
暑期研修感言
2014/02/17 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
返乡农民工证明
2015/06/24 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
JS class语法糖的深入剖析
2022/07/07 Javascript