`
zccst
  • 浏览: 3315746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Yii之widget专题

    博客分类:
  • YII
 
阅读更多
作者:zccst

关于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有两种写法
/**********  方式一:  **********/
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


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    Yii框架PDF中文文档

    测试是保证软件质量的重要手段之一,在Yii框架中有很好的支持。 #### 五、专题 **自动化代码生成**:通过Gii工具或其他方式自动生成代码,节省开发时间。 - **网址管理**:用于生成和解析URL。 - **验证和授权**:...

    Yii框架文档(2010.7.18)

    例如,1.1.3版本增强了配置widget默认值的支持,并引入了基于Web的代码生成工具Gii。1.1.0版本则增加了对单元测试和功能测试的支持,同时引入了可扩展的formbuilder,以及改善了安全模型属性的声明方式。版本1.0.11...

    yii框架语言基础

    - 模型负责与数据库进行交互,它通常定义数据表的结构以及与之相关的业务逻辑。 8. 视图(View) - 视图是模型数据在用户界面的展现方式,它包含了数据展示的逻辑。 - 视图支持布局(Layout)和小物件(Widget)...

    Yii_权威指南

    - 支持使用 widget 皮肤,增强了 UI 设计灵活性。 - 引入了可扩展的 form builder,提升了表单创建的便捷性。 - 改进了关联 ActiveRecord 查询的默认加载方式。 - 增加了对表前缀的支持。 - 发布了一系列新的...

    Yii实现简单分页的方法

    更多关于Yii框架的使用,可以参考相关专题和教程,比如《Yii框架入门及常用技巧总结》、《PHP优秀开发框架总结》等,以获取更多关于Yii框架的知识和开发技巧。同时,为了更好地进行PHP开发,读者也可以阅读《Smarty...

    Yii框架分页技术实例分析

    Yii框架是一种流行的PHP开发框架,它提供了丰富的功能和组件,以帮助开发人员...对于希望学习更多关于Yii框架分页技术的朋友,可以进一步查看相关的专题文章和教程,从而深入了解Yii框架的分页组件以及其他相关技术。

    Yii CGridView用法实例详解

    更多关于Yii框架的内容,读者可以查看相关的专题文章,例如《Yii框架入门及常用技巧总结》、《PHP优秀开发框架总结》等。这些资源有助于深入了解Yii框架的其他组件和技巧,从而全面提高基于Yii框架的PHP程序设计能力...

    yii通过小物件生成view的方法

    在Yii框架中,小物件(widget)的使用是构建动态网页和用户界面的关键技术之一。Yii小物件提供了一个高级的抽象,允许开发者通过简单的方法和属性配置来复用代码,减少重复工作量,并保持代码的清晰和可维护性。而...

    YII2框架中分页组件的使用方法示例

    echo \yii\widgets\LinkPager::widget([ 'pagination' =&gt; $page, // 分页组件对象 'firstPageLabel' =&gt; '首页', 'lastPageLabel' =&gt; '尾页', 'nextPageLabel' =&gt; '下一页', 'prevPageLabel' =&gt; '上一页', '...

Global site tag (gtag.js) - Google Analytics