【问题标题】:Yii Framework: Pagination in partial viewYii 框架:局部视图中的分页
【发布时间】:2014-06-05 08:28:13
【问题描述】:

在 Yii 框架下工作,我有一个加载和列出不同部分的页面。当然,这是通过 renderPartial 几个不同的视图完成的。其中一个部分接受一个数组并显示其中的项目列表。我需要做的是仅对此部分进行分页,最好使用 AJAX,这样我就不会在页面选择时重新加载所有内容。

这是问题的第一部分。我已经研究过将CActiveDataProviderCListView 一起使用,但是,问题在于我正在显示与数据库无关的数组中的信息。换句话说,没有条件等来创建数组,我只有一堆$items,仅此而已。任何提示表示赞赏!

【问题讨论】:

    标签: php ajax yii pagination


    【解决方案1】:

    不用CGridView也可以使用CLinkPager,有一个例子:

    在控制器中:

    $criteria = new CDbCriteria;
    $criteria -> order = 'date';
    $pages = new CPagination(Posts::model() -> count());
    $pages -> pageSize = 50;
    $pages -> applyLimit($criteria);
    $posts= Posts::model() -> findAll($criteria);
    $this -> controller -> render('list', array('posts' => $posts, 'pages' => $pages));
    

    在视图中:

    <?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>
    <ul>
    <?php foreach($posts as $x => $post): ?>
      <li><?php echo $post -> title ?></li>
    <?php endforeach; ?>
    </ul>
    <?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>
    

    【讨论】:

    • 这里的问题是我没有标准。我只有一个与数据库无关的 $items 数组,所以 applyLimit 部分对我不起作用。
    【解决方案2】:

    您可以将CArrayDataProvider 实例用作dataProviderCListView。它具有内置的分页支持,尽管您可能必须显式设置分页的currentPage

    【讨论】:

    • 我想知道是否可以将 CArrayDataProvider 与常规数组一起使用,而不是像我的情况那样与数据库相关?
    • 实际上有几件事,但我被代码包裹得太深了。我会清理它并重新开始,然后如果我还在挣扎,我会更新问题。谢谢!
    • 好吧,我从头开始尝试,使用一个简单的 $items 数组: $dataProvider = new CActiveDataProvider($items, array( 'pagination' => array( 'PageSize' => 10, ) ));然后显示它的简单列表: $this->widget('CLinkPager',array('pages'=>$dataProvider, "cssFile" => false)) 然后我得到以下错误: CActiveDataProvider 及其行为没有一个名为“getPageCount”的方法或闭包。
    • 错误,这里是使用 CListView 而不是 CLinkPage 的视图中的正确代码: $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView' =>'view', 'template'=>"{items}\n{pager}", ));
    • 应该是$dataProvider = new CArrayDataProvider( ...?另外,请将您的代码添加到您的问题中,而不是将其放入 cmets。格式化要容易得多。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多