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效果没有了,所以给大家一个提醒.
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
