Yii Framework 开发教程 UI 小组件Widget 概述

和通常的应用程序开发框架一样,Yii Framework也提供了一组UI小组件(CWidget)来帮助程序员设计用户界面,小组是 CWidget 或其子类的实例.它是一个主要用于表现数据的组件.小组通常内嵌于一个视图来产生一些复杂而独立的用户界面.例如,一个日历小物件可用于渲染一个复杂的日历界面.小组件使用户界面更加可复用.

我们可以按如下视图脚本来使用一个小物件:

双击代码全选
1
2
3
<?php $this ->beginWidget( 'path.to.WidgetClass' ); ?>    
...可能会由小物件获取的内容主体...    
<?php $this ->endWidget();  >

或者

<?php $this->widget('path.to.WidgetClass'); ? >;  

后者用于不需要任何 body 内容的组件.

小组件可通过配置来定制它的表现.这是通过调用 CBaseController::beginWidget 或 CBaseController::widget 设置其初始化属性值来完成的.例如,当使用 CMaskedTextField 小物件时,我们想指定被使用的 mask .我们通过传递一个携带这些属性初始化值的数组来实现.这里的数组的键是属性的名称,而数组的值则是小物件属性所对应的值.正如以下所示 :

双击代码全选
1
2
3
4
5
<?php    
$this ->widget( 'CMaskedTextField' , array (    
     'mask' => '99/99/9999'
));    
?>

继承 CWidget 并覆盖其init() 和 run() 方法,可以定义一个新的小物件:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
class MyWidget extends CWidget    
{    
     public function init()    
     {    
         // 此方法会被 CController::beginWidget() 调用    
     }    
          
     public function run()    
     {    
         // 此方法会被 CController::endWidget() 调用    
     }    
}

小组件可以像一个控制器一样拥有它自己的视图.默认情况下,小物件的视图文件位于包含了小组件类文件目录的views 子目录之下.这些视图可以通过调用 CWidget::render() 渲染,这一点和控制器很相似.唯一不同的是,小组件的视图没有布局文件支持。另外,小组件视图中的$this指向小物件实例而不是控制器实例。

在上一篇文章Yii Framework 开发简明教程(8) 使用FormModel 说通过CController来处理用户提交事件,和Windows 桌面应用或ASP.Net做个类比, Yii 中视图View (HTML Form) 类似于WinForm或是Asp.Net 的Page。 控制类Controller类似Windows桌面应用或Asp.Net的事件处理(Code-Behind)类。 严格上来说,把 Yii 中视图View (HTML Form)比作Windows桌面中的WinFrom或是Asp.Net 的Page并不十分恰当,实际上Yii 中视图的整个HTML (或是body)对等于WinForm或是Page。 HTML Form 也只是CWidget的一个子类,对应到CActiveForm UI组件,此外,Yii内置了下面CWidget类型:

其中CJuiWidget (封装JQuery)和CInputWidget进一步分为:

后面的教程将逐个介绍Yii提供的UI小组件的用法,除了这些内置的UI小组件外,Yii也支持自定义UI小组件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值