Yii之widget

 关于widgets,他们在yii中的关系如下 
1.system.web.widgets  系统自带最基本的widget 
2.zii.widgets  是基本扩展 
3.zii.widgets.grid  是基本扩展的重要分支 

4.zii.widgets.jui  是插件扩展 


一,system.web.widgets 包括:

  • CActiveForm 
  • CAutoComplete 
  • CClipWidget 
  • CContentDecorator 
  • CFilterWidget 
  • CFlexWidget 
  • CHtmlPurifier 
  • CInputWidget 
  • CMarkdown 
  • CMaskedTextField 
  • CMultiFileUpload 
  • COutputCache 
  • COutputProcessor 
  • CStarRating 
  • CTabView 
  • CTextHighlighter 
  • CTreeView 
  • CWidget 
二,zii.widgets  
默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下。这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似。唯一不同的是,widget的视图没有布局文件支持。 
同时,view 文件中的 $this 指的是widget 实例而不是 controller 实例。 
包括: 
  •     CBaseListView 
  •     CBreadcrumbs 
  •     CDetailView 
  •     CListView 
  •     CMenu 
  •     CPortlet 
三,zii.widgets.grid 
  • CButtonColumn 
  • CCheckBoxColumn 
  • CDataColumn 
  • CGridColumn 
  • CGridView 
  • CLinkColumn
四,zii.widgets.jui 
  •      CJuiAccordion 
  •      CJuiAutoComplete 
  •      CJuiButton 
  •      CJuiDatePicker 
  •      CJuiDialog 
  •      CJuiDraggable 
  •      CJuiDroppable 
  •      CJuiInputWidget 
  •      CJuiProgressBar 
  •      CJuiResizable 
  •      CJuiSelectable 
  •      CJuiSlider 
  •      CJuiSliderInput 
  •      CJuiSortable 
  •      CJuiTabs 
  •      CJuiWidget 

CPortlet是widget的一种,专门负责展示

[php]  view plain copy
  1. //在../components/RecentComments.php中  
  2.    
  3.  Yii::import('zii.widgets.CPortlet');  
  4.  class RecentComments extends CPortlet  
  5.  {  
  6.     public $title='Recent Comments';  
  7.     public $maxComments=10;  
  8.    
  9.     public function getRecentComments()  
  10.     {  
  11.         return Comment::model()->findRecentComments($this->maxComments);  
  12.     }  
  13.    
  14.     protected function renderContent()  
  15.     {  
  16.         $this->render('recentComments');  
  17.     }  
  18.  }  
  19.    
  20.  //在../components/view/recentComments.php中  
  21.  <ul>  
  22.     <?php foreach($this->getRecentComments() as $comment): ?>  
  23.     <li><?php echo $comment->authorLink; ?> on  
  24.         <?php echo CHtml::link(CHtml::encode($comment->post->title), $comment->getUrl()); ?>  
  25.     </li>  
  26.     <?php endforeach; ?>  
  27.  </ul>  

 

自定义Widget类以及调用

[php]  view plain copy
  1. class testWidget extends CWidget  
  2.  {      
  3.      public function init()  
  4.      {  
  5.          //当视图中执行$this->beginWidget()时候会执行这个方法  
  6.          //可以在这里进行查询数据操作  
  7.      }  
  8.     
  9.      public function run()  
  10.      {  
  11.          //当视图中执行$this->endWidget()的时候会执行这个方法  
  12.          //可以在这里进行渲染试图的操作,注意这里提到的视图是widget的视图  
  13.          //注意widget的视图是放在跟widget同级的views目录下面,例如下面的视图会放置在  
  14.          //  /protected/widget/test/views/test.php  
  15.          $this->render('test'array(  
  16.              'str'=>'WIDGET视图变量',  
  17.          ));  
  18.      }  
  19.  }  
  20.    

调用代码
[html]  view plain copy
  1. <?php $this->beginWidget('application.Widget.testWidget'); ?>  
  2.   
  3.  <?php $this->endWidget(); ?>  

你可能感兴趣的:(yii,widget)