yii中实现数组分页(用yii自带控件实现自己定义列表分页)

本文介绍了一种将来自两个不同表的数据整合并展示的方法,通过PHP实现了课程和文件两类信息的统一分页显示。文章详细展示了如何从不同的表中获取数据、构造统一的数据结构,并使用Yii框架的组件来实现分页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开发一个新功能 就是把两个表中的数据合在一起实现分页的功能(两个表中的字段是不一样的,有共同的属性,但字段名是不一样的)

效果如下图所示:


主要实现部分


courseController.php

		$cid = $this->_gets->getParam('cid',0);
		$levelid = $this->_gets->getParam('levelid','');
		$title = "全部课程";
		if($cid)
		{
			$title = SubCate::model()->getName($cid);
		}
		$this->pageTitle = $title;
		$listinfo = array();
		if($cid)
		{
			$cinfo = Course::model()->findAll("course_class=$cid");
			$finfo = UpFile::model()->findAll("file_class=$cid");
		}
		else
		{
			$cinfo = Course::model()->findAll();
			$finfo = UpFile::model()->findAll();
		}
		if($cinfo)
		{
			foreach ($cinfo as $plist)
			{
				$temp = array();
				$temp['type'] = 1;
				$temp['title']=$plist->course_title;
				$temp['desc'] = $plist->course_describe;
				$temp['pic'] = $plist->course_pic;
				$temp['id'] = $plist->course_id;
				$temp['url'] = $this->createUrl('/course/special',array('id'=>$plist->course_id));
				array_push($listinfo,$temp);
			}
		}

		if($finfo)
		{
			foreach ($finfo as $plist)
			{
				$temp = array();
				$temp['type'] = 2;
				$temp['title']=$plist->file_title;
				$temp['desc'] = $plist->file_describe;
				$temp['pic'] = $plist->file_pic;
				$temp['id'] = $plist->file_id;
				$temp['url'] = $this->createUrl('/course/detail',array('itemid'=>$plist->file_id));
				array_push($listinfo,$temp);
			}
		}
		$info = new CArrayDataProvider($listinfo, array(
			//'keyField'=>'itemid',
			'totalItemCount'=>count($listinfo),
			'pagination'=>array('pageSize'=>40,),
		));
		$this->render('list',array('listinfo'=>$info,'title'=>$title,'levelid'=>$levelid,'cid'=>$cid));

view/list.php

		<?php
		$this->widget('zii.widgets.CListView', array(
			'id'=>'Clist',
			'dataProvider'=>$listinfo,
			'itemView'=>'_list_view',//要注意的地方
			'template'=>'<ul class="list_sub js_list_sub select">{items}</ul><div class="light">{pager}</div>',//分页填充
			'enableSorting'=>false,
			'ajaxUpdate'=>false,
			'pager'=>array(        //通过pager设置样式   默认为CLinkPager
				'prevPageLabel'=>'上一页',
				'firstPageLabel'=>'首页', //first,last 在默认样式中为{display:none}即不显示,通过样式{display:inline}即可
				'nextPageLabel'=>'下一页',
				'lastPageLabel'=>'末页',
				'maxButtonCount'=>40,
				'header'=>'',
			 ),
		));
		?>

view/_list_view.php //以下内容是要重复的部分

<li <?php if($data['type']==1):?>class="first"<?php endif;?>>
<div class="img">
<a href="<?php echo $data['url'];?>" class="img_a">
<img src="/media/school/<?php echo $data['pic']?>" width="209" height="129" />
<div class="bgcolor hide"></div>
<div class="img_txt hide"><?php echo Tool::str_cut($data['desc'], 80)?></div>
</a>
<div class="img_btn hide">
<a href="javascript:void(0);" class="add_collect">收藏</a><a href="javascript:void(0);" class="add_plan">加入学习计划</a>
</div>
</div>
<h3><a href="<?php echo $data['url'];?>"><?php echo Tool::str_cut($data['title'],50,'');?></a></h3>
</li>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值