作者:zccst
[b]关于widgets,他们在yii中的关系如下[/b]
system.web.widgets 系统自带最基本的widget
zii.widgets 是基本扩展
zii.widgets.grid 是基本扩展的重要分支
zii.widgets.jui 是插件扩展
[b][size=large]一,system.web.widgets[/size][/b]
包括:
CActiveForm
CAutoComplete
CClipWidget
CContentDecorator
CFilterWidget
CFlexWidget
CHtmlPurifier
CInputWidget
CMarkdown
CMaskedTextField
CMultiFileUpload
COutputCache
COutputProcessor
CStarRating
CTabView
CTextHighlighter
CTreeView
CWidget
[b]1,CWidget[/b]
批注:CWidget是所有Widget的基类。CWidget是自包含组件,可以看出是MVC的简略版,CWidget相比Controller,既没有actions,也没有filters。
实现细节可参考 CBaseController and CBaseController::widget.
CWidget
[b]2,CWidget实例(右侧页面)[/b]
CWidget是components下一个独立的文件夹(路径是:../components/widgets/)
有自己的controller和views。其中controller继承自CWidget,习惯命名为XXWidget.php(XXWidget extends CWidget)。
XXWidget.php有两种写法
[b]3,实例[/b]
例如,在表单创建时
[b][size=large]二,zii.widgets[/size][/b]
默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下。这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似。唯一不同的是,widget的视图没有布局文件支持。
同时,view 文件中的 $this 指的是widget 实例而不是 controller 实例。
包括:
CBaseListView
CBreadcrumbs
CDetailView
CListView
CMenu
CPortlet
例一,
CPortlet是widget的一种,专门负责展示
[b][size=large]三,zii.widgets.grid[/size][/b]
CButtonColumn
CCheckBoxColumn
CDataColumn
CGridColumn
CGridView
CLinkColumn
[b][size=large]四,zii.widgets.jui[/size][/b]
CJuiAccordion
CJuiAutoComplete
CJuiButton
CJuiDatePicker
CJuiDialog
CJuiDraggable
CJuiDroppable
CJuiInputWidget
CJuiProgressBar
CJuiResizable
CJuiSelectable
CJuiSlider
CJuiSliderInput
CJuiSortable
CJuiTabs
CJuiWidget
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
[img]http://dl2.iteye.com/upload/attachment/0109/0668/fb266dfa-95ca-3d09-b41e-5f04a19ba9a1.png[/img]
[b]关于widgets,他们在yii中的关系如下[/b]
system.web.widgets 系统自带最基本的widget
zii.widgets 是基本扩展
zii.widgets.grid 是基本扩展的重要分支
zii.widgets.jui 是插件扩展
[b][size=large]一,system.web.widgets[/size][/b]
包括:
CActiveForm
CAutoComplete
CClipWidget
CContentDecorator
CFilterWidget
CFlexWidget
CHtmlPurifier
CInputWidget
CMarkdown
CMaskedTextField
CMultiFileUpload
COutputCache
COutputProcessor
CStarRating
CTabView
CTextHighlighter
CTreeView
CWidget
[b]1,CWidget[/b]
批注:CWidget是所有Widget的基类。CWidget是自包含组件,可以看出是MVC的简略版,CWidget相比Controller,既没有actions,也没有filters。
实现细节可参考 CBaseController and CBaseController::widget.
CWidget
[b]2,CWidget实例(右侧页面)[/b]
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));
}
/********** 方式二: **********/
[b]3,实例[/b]
例如,在表单创建时
<?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'); ?>
[b][size=large]二,zii.widgets[/size][/b]
默认情况下, 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>
[b][size=large]三,zii.widgets.grid[/size][/b]
CButtonColumn
CCheckBoxColumn
CDataColumn
CGridColumn
CGridView
CLinkColumn
[b][size=large]四,zii.widgets.jui[/size][/b]
CJuiAccordion
CJuiAutoComplete
CJuiButton
CJuiDatePicker
CJuiDialog
CJuiDraggable
CJuiDroppable
CJuiInputWidget
CJuiProgressBar
CJuiResizable
CJuiSelectable
CJuiSlider
CJuiSliderInput
CJuiSortable
CJuiTabs
CJuiWidget
如果您觉得本文的内容对您的学习有所帮助,您可以微信:
[img]http://dl2.iteye.com/upload/attachment/0109/0668/fb266dfa-95ca-3d09-b41e-5f04a19ba9a1.png[/img]