2019独角兽企业重金招聘Python工程师标准>>>

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="data:images/adverts/<?php echo $advert; ?>" alt="whatever" />

存储到protected\components\views\bannermagic.php
3. 调用该Widget
<?php $this->widget('BannerMagicWidget'); ?>

转载于:https://my.oschina.net/guomingliang/blog/297181

Yii中创建自己的Widget相关推荐

  1. yii中常见问题(2)

    如何显示静态页 重写actions 'help'=>array( 'class'=>'CViewAction', 'basePath'=>'help', //指定目录名 'defau ...

  2. ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

    前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...

  3. Flutter 中 stateless 和 stateful widget 的区别[Flutter专题60]

    Flutter 中 stateless 和 stateful widget 的区别 介绍 要在 Flutter 中构建任何应用程序,我们必须创建一个小部件类,它是 Flutter 应用程序的构建块.F ...

  4. 如何在 Flutter 中禁用默认的 Widget 飞溅效果

    如何在 Flutter 中禁用默认的 Widget 飞溅效果 默认情况下,许多 Flutter Material Design 小部件在被选中时会显示飞溅效果. 这适用于IconButton,InkW ...

  5. yii 1.4 constant.php,yii 中设置提示成功信息,错误提示信息,警告信息

    方法一: Yii::app()->user->setFlash('success',"Data saved!"); 设置键值名为success的临时信息.在getFla ...

  6. qt中创建控件布局以及删除原有布局和控件

    引言 当根据数据来创建控件并布局时,如果数据更新,那么之前创建的控件便需要删除后重新创建布局.该文主要说明将原来的布局和控件删除,重新创建并布局. 示例 先看一下ui文件: 下面是实现代码: void ...

  7. 中点击按钮新建widget_如何在iOS14中创建堆叠小组件?

    在iOS14中,苹果对iPhone和iPad的主屏幕进行了一些前所未有的的改变.它引入了一个叫"主屏幕小部件"的概念. 在以前的界面上,可以从左边的widgets访问小组件.然而, ...

  8. 使用Kotlin在Android Studio中创建井字游戏

    井字游戏也被称为"Noughts和crosses".它是两个玩家最普遍的纸笔游戏之一. 它主要由年幼的孩子放置,但很多时候,你也可以看到成年人玩这个来切断无聊.这个游戏非常方便,可 ...

  9. wordpress创建_十分钟即可在WordPress中创建动态小部件

    wordpress创建 Have you tried to find functionality for a specific purpose in WordPress but failed to f ...

最新文章

  1. 一招一式攻克linux(五)
  2. linux 修改 ko文件内核版本号
  3. GlobalAlloc全局内存的使用
  4. 原理篇 | 推荐系统之矩阵分解模型
  5. c 运行js脚本语言,Javascript脚本语言
  6. mysql恢复语句报错_php对于mysql恢复数据的时候,只能恢复一条!然后就会报错!但把sql语句直接贴到数据库里面是可以执行的!...
  7. PHP学习笔记--015 PHP 随笔
  8. 单生产者/单消费者 的 FIFO 无锁队列
  9. 同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式
  10. 索引缓存_如何重置您的Google桌面索引缓存
  11. Java--中文转换拼音,jpinyin-1.0.jar
  12. Ollydbg 1.10's plugin LsMem2CAry.dll
  13. luffy-16/订单表设计,立即付款接口/前端,支付成功get回调用户展示,支付成功post回调修改订单状态
  14. H.264的两个概念:DC系数和AC系数
  15. 微信加密聊天工具(持续开发中)
  16. 论文版「ChatGPT」来了!看论文问问题可同时进行,网友:看文献更省时了|开源...
  17. 文件名称重命名后,一键恢复的技巧
  18. ValueError: attempt to get argmax of an empty sequence
  19. 计算机应用基础00018课件
  20. 《互联网时代》 第六集 迁徙

热门文章

  1. 彻底搞懂MySQL分区
  2. 西湖大学教授:都说不唯论文,那我们发表论文是为了什么?
  3. 让机器“看见”:图像数据的特征提取方法
  4. 提高 GPU 训练利用率的Tricks
  5. 【廖雪峰python入门笔记】多重循环
  6. 程序员加班崩溃,过路外卖小哥主动帮忙改代码,网友直呼太暖了!
  7. 百度 和 AI教父Hinton 的故事
  8. 2020 中国高校薪资排行出炉!好过双一流的高校原来这么多!
  9. 可能是最详尽的PyTorch动态图解析
  10. YOLOv4 中的 Mish 激活函数