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的一种,专门负责展示

//在../components/RecentComments.php中
 
 Yii::import('zii.widgets.CPortlet');
 class RecentComments extends CPortlet
 {
 	public $title='Recent Comments';
 	public $maxComments=10;
 
 	public function getRecentComments()
 	{
 		return Comment::model()->findRecentComments($this->maxComments);
 	}
 
 	protected function renderContent()
 	{
 		$this->render('recentComments');
 	}
 }
 
 //在../components/view/recentComments.php中
 <ul>
 	<?php foreach($this->getRecentComments() as $comment): ?>
 	<li><?php echo $comment->authorLink; ?> on
 		<?php echo CHtml::link(CHtml::encode($comment->post->title), $comment->getUrl()); ?>
 	</li>
 	<?php endforeach; ?>
 </ul>



自定义Widget类以及调用

class testWidget extends CWidget
 {    
     public function init()
     {
         //当视图中执行$this->beginWidget()时候会执行这个方法
         //可以在这里进行查询数据操作
     }
  
     public function run()
     {
         //当视图中执行$this->endWidget()的时候会执行这个方法
         //可以在这里进行渲染试图的操作,注意这里提到的视图是widget的视图
         //注意widget的视图是放在跟widget同级的views目录下面,例如下面的视图会放置在
         //  /protected/widget/test/views/test.php
         $this->render('test', array(
             'str'=>'WIDGET视图变量',
         ));
     }
 }
 

调用代码
            <?php $this->beginWidget('application.Widget.testWidget'); ?>
 
             <?php $this->endWidget(); ?>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值