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&amp;MYSQL服务器配置说明
Oct 09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python2和Python3的共存和切换使用
2019/04/12 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Python猴子补丁知识点总结
2020/01/05 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
详解python中的异常和文件读写
2021/01/03 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
社区学习十八大感想
2014/01/22 职场文书
新闻传播专业求职信
2014/07/22 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
初中思想品德教学反思
2016/02/24 职场文书
python热力图实现的完整实例
2022/06/25 Python