入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Yii Ajax 分页

创建时间:2014-04-23 投稿人: 浏览次数:1397

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

控制器代码:

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。