Yii中创建自己的Widget.

来源:互联网 发布:linux终端进度条 编辑:程序博客网 时间:2024/06/05 08:52

http://koda.iteye.com/blog/1134606


下面以一个随机广告图片为例说明Yii中Widget的用法
1. 调用Widget

Php代码  收藏代码
  1. <?php $this->widget('WidgetName'); ?>  

或者
Php代码  收藏代码
  1. <?php $widget=$this->beginWidget('path.to.WidgetClass'); ?>  
  2. ...可能会由小物件获取的内容主体...  
  3. <?php $this->endWidget(); ?>  


也可以传参到Widget类
Php代码  收藏代码
  1. <?php $userId = 1; ?>  
  2. <?php $this->widget('WidgetName',array('userId'=>$userId)); ?>  

参数userId自动映射到Widget类的同名属性,所以在定义Widget时,别忘记了声明该属性。

2. 创建Widget
自定义Widget类要继承CWidget,覆盖方法run
Php代码  收藏代码
  1. <?php  
  2. class BannerMagic extends CWidget {  
  3.     public function run(){  
  4.     }  
  5. }  

或者:
Php代码  收藏代码
  1. class MyWidget extends CWidget {  
  2.     public function init() {  
  3.         // 此方法会被 CController::beginWidget() 调用  
  4.     }  
  5.      public function run() {  
  6.         // 此方法会被 CController::endWidget() 调用  
  7.     }  
  8. }  

下面是是BannerMagicWidget实现
Php代码  收藏代码
  1. <?php class BannerMagicWidget extends CWidget {  
  2.    public function run() {  
  3.      $random = rand(1,3);  
  4.      if ($random == 1) {  
  5.        $advert = "advert1.jpg";  
  6.      }  else if ($random == 2) {  
  7.        $advert = "advert2.jpg";  
  8.      }  else {  
  9.        $advert = "advert3.jpg";  
  10.      }   
  11.      $this->render('bannermagic',array(  
  12.        "advert"=>$advert,  
  13.      ));  
  14.    }  
  15. }  

存储到protected\components\BannerMagicWidget.php

对应的view文件可能的内容如下:
Php代码  收藏代码
  1. <img src="images/adverts/<?php echo $advert; ?>" alt="whatever" />  

存储到protected\components\views\bannermagic.php

3. 调用该Widget
Php代码  收藏代码
  1. <?php $this->widget('BannerMagicWidget'); ?> 

0 0