`
fantaxy025025
  • 浏览: 1253236 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Yii_Widget_how_to_use_使用

 
阅读更多
Yii_Widget_how_to_use_使用

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

Widget视图的目录:
这里注意:widget类中也可以像controller一样使用视图,视图的位置:Widget类所在的目录/views/,不是在protected的iews下面。
官方文档真nnd晦涩,刚才我用中文也不容易表达:By default, widget view files are located under the views subdirectory of the directory containing the widget class file.
结果看看源码才懂:
        $className=get_class($this);
        $class=new ReflectionClass($className);
        $path = dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
 
3. 调用该Widget
Php代码  收藏代码
  1. <?php  $this ->widget( 'BannerMagicWidget' ); ?>  

 

大部分来源:http://koda.iteye.com/blog/1134606,有改动和增加。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics