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。