关于widgets,他们在yii中的关系如下
system.web.widgets 系统自带最基本的widget
zii.widgets 是基本扩展
zii.widgets.grid 是基本扩展的重要分支
zii.widgets.jui 是插件扩展
一,system.web.widgets
包括:
CActiveForm
CAutoComplete
CClipWidget
CContentDecorator
CFilterWidget
CFlexWidget
CHtmlPurifier
CInputWidget
CMarkdown
CMaskedTextField
CMultiFileUpload
COutputCache
COutputProcessor
CStarRating
CTabView
CTextHighlighter
CTreeView
CWidget
1,CWidget
批注:CWidget是所有Widget的基类。CWidget是自包含组件,可以看出是MVC的简略版,CWidget相比Controller,既没有actions,也没有filters。
实现细节可参考 CBaseController and CBaseController::widget.
CWidget
2,CWidget实例(右侧页面)
CWidget是components下一个独立的文件夹(路径是:../components/widgets/)
有自己的controller和views。其中controller继承自CWidget,习惯命名为XXWidget.php(XXWidget extends CWidget)。
XXWidget.php有两种写法
3,实例
例如,在表单创建时
二,zii.widgets
默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下。这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似。唯一不同的是,widget的视图没有布局文件支持。
同时,view 文件中的 $this 指的是widget 实例而不是 controller 实例。
包括:
CBaseListView
CBreadcrumbs
CDetailView
CListView
CMenu
CPortlet
例一,
CPortlet是widget的一种,专门负责展示
三,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
system.web.widgets 系统自带最基本的widget
zii.widgets 是基本扩展
zii.widgets.grid 是基本扩展的重要分支
zii.widgets.jui 是插件扩展
一,system.web.widgets
包括:
CActiveForm
CAutoComplete
CClipWidget
CContentDecorator
CFilterWidget
CFlexWidget
CHtmlPurifier
CInputWidget
CMarkdown
CMaskedTextField
CMultiFileUpload
COutputCache
COutputProcessor
CStarRating
CTabView
CTextHighlighter
CTreeView
CWidget
1,CWidget
批注:CWidget是所有Widget的基类。CWidget是自包含组件,可以看出是MVC的简略版,CWidget相比Controller,既没有actions,也没有filters。
实现细节可参考 CBaseController and CBaseController::widget.
CWidget
2,CWidget实例(右侧页面)
CWidget是components下一个独立的文件夹(路径是:../components/widgets/)
有自己的controller和views。其中controller继承自CWidget,习惯命名为XXWidget.php(XXWidget extends CWidget)。
XXWidget.php有两种写法
- /********** 方式一: **********/
- public function run() {
- //逻辑
- $this->render("fail_basic", array('summaryIdcs' => $summaryIdcs));
- }
- /********** 方式二: **********/
3,实例
例如,在表单创建时
- <?php $form=$this->beginWidget('CActiveForm', array(
- 'id'=>'user-form',
- 'enableAjaxValidation'=>false,
- 'htmlOptions'=>array('enctype'=>'multipart/form-data'),
- )); ?>
- ..body content that may be captured by the widget...
- <?php $this->endWidget(); ?>
- //或
- <?php $this->widget('path.to.WidgetClass'); ?>
二,zii.widgets
默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下。这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似。唯一不同的是,widget的视图没有布局文件支持。
同时,view 文件中的 $this 指的是widget 实例而不是 controller 实例。
包括:
CBaseListView
CBreadcrumbs
CDetailView
CListView
CMenu
CPortlet
例一,
- 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视图变量',
- ));
- }
- }
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>
三,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
转自:http://blog.163.com/tb_hzx/blog/static/21479319120130102735874/