[图]关于YII中部件的使用详解

对于每一个初学者来说,学习YII框架都会觉得很多迷茫和无从下手的时候,我也是从初学者过来的,在YII框架中,用的最多的莫过于部件的应用了,部件让让更多的代码可重复,在页面的任意位置都可以进行调用,非常的方便,我们接下来就来完成一个小型的部件功能开发吧。

首先我们来看下部件的效果图吧:


本部件是基于YII自带Demo的blog系统进行展示的,首先我们来看下文件结构:


上图中红线框中的就是部件的存放位置,extensions文件夹下一般都是以文件夹的形式来区分不同的部件命名空间,比如我这里写了个列表的部件,如果需要有view的话,也在部件的文件夹下新建views文件夹,在views下新建相应的php文件即可。

首先我们来看listExt/listwidet.php文件的代码结构:

Yii::import ( 'zii.widgets.CPortlet' );
class Listwidet extends CPortlet {
	public $pagesize = 10;
	public function init() {
		$this->id = 'menuList';
		$this->title = '已存在的用户列表';
		parent::init ();
	}
	public function renderContent() {
		$result = new CActiveDataProvider('User',array(
				'pagination'=> array(
						'pagesize'=>$this->pagesize,//这里要传参的,下面会讲到
						),
				'sort'=>array('defaultOrder'=>'id asc')
				));
		$this->render ( 'listwidet', array (
				'userdata' => $result
		) );
	}
}
上面的代码主要使用了 CActiveDataProvider 详细可以查看这里的链接: http://www.yiichina.com/api/CActiveDataProvider


接着我们来看下listExt/views/listwidet.php 的代码结构:

<ul>
<?php
$this->widget ( 'zii.widgets.grid.CGridView', array (
		'dataProvider' => $userdata,
		'columns' => array (
				'id',
				'username',
				array (
						'name' => 'email', 
						'type' => 'html', //默认为text
						'value' => 'CHtml::mailto($data->email)',
						'htmlOptions' => array (
								'width' => 120,
								'style' => 'text-align:center;'//这里的其实可以写在css里的
						)
				),
				array (
						'header' => '操作',
						'htmlOptions' => array (
								'width' => 150,
								'style' => 'text-align:center;'
						),
						'class' => 'CButtonColumn',
						'buttons' => array (
								'btnView' => array (
										'label' => '查看',
										'url' => 'array("/user/view/","id"=>$data->id)',
										'imageUrl' => false
								),
								'btnUpdate' => array (
										'label' => '修改',
										'url' => 'array("/user/update/","id"=>$data->id)',
										'imageUrl' => false
								),
								'btnDelete' => array (
										'label' => '删除',
										'url' => 'array("/user/delete/","id"=>$data->id)',
										'imageUrl' => false
								)
						),
						'template' => '{btnView},{btnUpdate},{btnDelete}'
				)
		)
) );
?>
</ul>
上面的配置可能看起来有点复杂,不过我们来分解下:

首先email的列是比较特殊的,我们要配置此列显示为html的格式, 具体的请参考http://www.yiichina.com/api/CDataColumn

接着我们最后自定义了一列,为了显示为按钮类,我们使用了class 为 CButtonColumn 的列类型,具体请参考http://www.yiichina.com/api/CButtonColumn


现在部件的内部工作代码都写好了,那我们应该怎么调用呢,其实很简单的一句话就可以搞定。


在需要调用的页面的任意位置写上下面的代码:

<?php $this->widget('ext.listExt.listwidet',array('pagesize' => 5));?>

上面的代码意思是调用此部件,同时传入分页的参数每页显示5条数据,下面的效果就出来了。


其实很简单的。

当然如果更高级的部件开发就下次分享吧,部件中我们可以加入我们需要的资源,比如css、js、images等,还有如果有布局的话,还可以加入layouts等等。


转载请注明 来自Billy.lee http://blog.csdn.net/qq415734794/article/details/7673278

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值