在网上我有搜索很多,找过很多有些写的很简单,没有一个是完整的,我就网上看着自己做了,现在分享下.
控制器代码:
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效果没有了,所以给大家一个提醒.