php--yii框架中的ajax分页与yii框架自带的分页

要想使用Yii分页类

第一步:在控制器层加载分页类

use yii\data\Pagination;

第二步: 使用model层查询数据,并用分分页,限制每页的显示条数

$data = Zhao::find();  //zhao为model层,在控制器刚开始use了field这个model,这儿可以直接写Field,开头大小写都可以,为了规范,我写的是大写

$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '3']);    //实例化分页类,带上参数(总条数,每页显示条数)

$model=$data->offset($pages->offset)->limit($pages->limit)

->all();

 

第三步:向视图层传送数据

return $this->render('show',[

            'pages' => $pages,

        ]);

传送数据的时候,render函数,否则过去视图层没有样式

 

第四步:

   在视图层顶层写上

<?php

use yii\helpers\Html;

use yii\widgets\ActiveForm;

    use yii\widgets\LinkPager;

    use yii\helpers\Url;

?>

 

  在显示数据底部

<?=

LinkPager::widget([

      'pagination' => $pages,

    ]);

?>

 

 

效果:

 

 

 

Yii框架里面的ajax分页,其实很简单,

只需在

<?=

LinkPager::widget([

      'pagination' => $pages,

    ]);

?>

后面加上下面这段代码:

<?php $this->beginBlock('abc'); ?>

$(document).on('click','.pagination a',function(e){

e.preventDefault();

var url=$(this).attr('href');

$.get(url,function(msg){

//alert(msg);

$('#lists').html(msg);

});

});

<?php $this->endBlock();  $this->registerJs($this->blocks['abc'], View::POS_END); ?>

另外在视图层顶部加上这一句话

use yii\web\View;

在控制器层做一下判断,改变样式:

if(Yii::$app->request->isAjax)
       {
             return $this->renderPartial('list',[
                'model' => $model,
                'pages' => $pages,
                'arr'=>$arr,

            ]);
       }
       else
       {
            return $this->render('list',[
                'model' => $model,
                'pages' => $pages,
                'arr'=>$arr,

            ]);
       }
       

 

最后的效果和上面的效果是一样的!

 

posted @ 2016-03-29 09:17  不解凡忧  Views(758)  Comments(0Edit  收藏  举报