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高级对象构建 工厂模式的使用
Feb 05 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
php实现文件下载实例分享
Jun 02 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
php实现encode64编码类实例
Mar 24 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 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
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
Python中replace方法实例分析
2014/08/20 Python
常见python正则用法的简单实例
2016/06/21 Python
Python打包可执行文件的方法详解
2016/09/19 Python
python django事务transaction源码分析详解
2017/03/17 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
Pycharm小白级简单使用教程
2020/01/08 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
python PIL模块的基本使用
2020/09/29 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
幼儿园长自我鉴定
2013/10/17 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
海飞丝的广告词
2014/03/20 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android