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 相关文章推荐
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
php购物车实现代码
Oct 10 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
php实现的常见排序算法汇总
Sep 08 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
Yii2选项卡的简单使用
May 26 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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
一个好用的分页函数
2006/11/16 PHP
三种php连接access数据库方法
2013/11/11 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
围观tangram js库
2010/12/28 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
运动会100米解说词
2014/01/23 职场文书
《白鹅》教学反思
2014/04/13 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2015年党员自评材料
2014/12/17 职场文书
教师聘用意向书
2015/05/11 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书