Yii Ajax 分页

在网上我有搜索很多,找过很多有些写的很简单,没有一个是完整的,我就网上看着自己做了,现在分享下.

控制器代码:

public function actionIndex() {
	$criteria=new CDbCriteria();
	$criteria->condition=('product_id=1 and status=1');//查询的条件
	$criteria->order='comment_date DESC';//排序
	$dataProvider=new CActiveDataProvider('ProductComment',array( //ProductComment 商品评论模型
	    'pagination'=>array(
		'pageSize'=>2, //每页显示多少条数据
	    ),
	    'criteria'=>$criteria,
	));
	$this->render('default',array('dataProvider'=>$dataProvider));
    }

default 视图代码:

$this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$dataProvider,
	'itemView'=>'_comments',//对应的评论信息的模板
	'ajaxUpdate'=> true,//AJAX翻页  false为不是ajax翻页
	'pager' => array(//pager 的配置信息。默认为<code>array('class'=>'CLinkPager')</code>.也可以自己配置
	    'header'=>'',//去除分页前的GO TO ....
	    'nextPageLabel' => '下一页',
	    'prevPageLabel' => '上一页'
	),
    <span style="white-space:pre">	</span>//在这里还可以配置一些排序规则,具体可以查阅手册
    )); 

_comments 这个模板写在跟default一个目录下就可以了,Yii会自动找到这个模板

下面,就是 _comments 视图的代码

这个大家开始可能不知道怎么写,又没全传值过来.反正我开始就不知道.后面,看了Yii官网有.

具体是这样:

<p><?php echo $data->comment ?></p>

这是一个对象,直接就可以用,如果你想着循环$data里的数据出来,那你就想错了,你可以就写我上面那行代码,具体根据自己代码做改变,你就能看出来了,它是自己循环的.

最后如果你按我做的成功了,那么会发现页面上有Displaying 1-2 of 9 results.还有就是没有评论时,会显示 No results found.那怎么去除呢?


<?php 
			    $this->widget('zii.widgets.CListView', array(
				    'dataProvider'=>$dataProvider,
				    'itemView'=>'_comments',
				    'summaryText'=>'',//去除Displaying 1-2 of 9 results
				    'emptyText'=>'', //去除在没有评论时,显示的No results found
				    'ajaxUpdate'=> true,//AJAX翻页
				    'pager' => array(
					'header'=>'',
					'nextPageLabel' => '下一页',
					'prevPageLabel' => '上一页'
				    ),
				)); 
			?>




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下是最完整的:因为你取评论表,肯定也要跟用户表关联,或其它表关联

控制器:

$dataProvider=new CActiveDataProvider('ProductComment',array(
	    'pagination'=>array(
		'pageSize'=>2,
	    ),
	    'criteria'=>array(
		'condition'=>('product_id='.$pid.' and status=1'),
		'order'=>'comment_date DESC',
		'with'=>array('author'),
	    ),
	));
$this->render('index', compact('dataProvider'));

ProductComment 模型:

public function relations() {
        return array(
            'author' => array(self::BELONGS_TO, 'User', '', 'on' => 't.user_guid=author.user_guid'),
        );
    }

index视图代码:

<div class="goods-comment-list">
			<?php 
			    $this->widget('zii.widgets.CListView', array(
				    'dataProvider'=>$dataProvider,
				    'itemView'=>'_comments',
				    'summaryText'=>'',
				    'ajaxUpdate'=> true,//AJAX翻页
				    'pager' => array(
					'header'=>'',
					'nextPageLabel' => '下一页',
					'prevPageLabel' => '上一页'
				    ),
				)); 
			?>
 </div> 


_comments 视图代码:

    <li>
	<p><?php echo $data->comment ?></p>
	<div class="state">
	    <span class="icon-stat icon-stat-<?php echo $data->score ?>"></span> 
		来自<a href="#" target="_blank"> 
		<?php if($data->author->username) : ?><!-- 如果用户名不为空,则显示用户名 -->
		    <?php echo $data->author->username ?>
		<?php else : ?><!-- 如果用户名为空,则显示用户注册号码 -->
		    <?php echo substr_replace($data->author->reg_phone, '****', 3,4) ?>
		<?php endif; ?>
		</a>的评价
	    <span class="line">|</span> <?php echo $data->comment_date ?>
	</div>
    </li>
</ul>

说个事,今天我在看项目哪里有问题时,发现,我的Ajax评论没有用了,变成不是Ajax的了,妈蛋,是什么情况,svn回退测试发现加载了个jquery18.js这个jquery文件,去掉就没有问题了,问了下同事,貌似这个是jquery那个文件.其实项目里已经有了,又加上一个导致Ajax效果没有了,所以给大家一个提醒.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值