【问题标题】:yii2 odd/even listview with load more paginationyii2奇/偶列表视图,加载更多分页
【发布时间】:2015-05-21 04:48:16
【问题描述】:

第一个数据加载很好,但是当我单击加载更多时,我的第二页数据甚至只进入 div。 我正在生成这样的列表:

<div class="odd">
    <items>item1</items>
    <items>item3</items>
    <items>item5</items>
    <items>item7</items>
</div>

<div class="even">
    <items>item2</items>
    <items>item4</items>    
    <items>item6</items>
    <items>item8</items>
</div>

使用此自定义 ListView 类:

class ListViewOdd extends ListView
{
public function renderItems()
    {
        $models = $this->dataProvider->getModels();
        $keys = $this->dataProvider->getKeys();
        $rowsOdd = $rowsEven = [];
        foreach (array_values($models) as $index => $model) {
            if ($index%2 == 0) {
                 $rowsOdd[] = $this->renderItem($model, $keys[$index], $index);
            } else {
                 $rowsEven[] = $this->renderItem($model, $keys[$index], $index);
            }
        }
        return '<div class="odd">'.implode($this->separator, $rowsOdd) . '</div><div class="even">'.implode($this->separator, $rowsOdd) .'</div>'; // replace <div> to Html::tag('div', ...)
    }
}


echo ListViewOdd::widget([
    'dataProvider' => $dataProvider,
    'itemView' => '_post',

]);

但是加载更多的分页而不是再次将数据拆分为奇数/偶数列表作为我的第一个数据列表。

我没有从控制器和操作中传递任何东西我正在使用模型来获取数据提供者

<?php echo ListViewOdd::widget([ 
'dataProvider' => Posts::getCommonListData($industry,'user','engage',0),
            'itemOptions' => ['class' => 'item post-item'],
            'summary' => '',
            'id' => 'my-listview-id',
            'itemView' => '_Posts',
            'viewParams' => [
                  'fullView' => true,
                ],
            'pager' => [
            'class' => \app\vendor\kop\y2sp\ScrollPager::className(),
            //'negativeMargin' => '200',
            'triggerText' => 'Load More',
            //'triggerOffset' => 3,
            'noneLeftText' => '',
            ],  
        ]);

getting output like this

<div class="odd">
    <items>item1</items>
    <items>item3</items>
    <items>item5</items>
    <items>item7</items>
</div>

<div class="even">
    <items>item2</items>
    <items>item4</items>    
    <items>item6</items>
    <items>item8</items>
    <items>item9</items>
    <items>item10</items>    
    <items>item11</items>
    <items>item12</items>
</div>

点击 loadmore 后,它只是将所有记录加载到偶数 div 中,并加载更多选项也位于偶数 div 下

【问题讨论】:

  • 请显示截图。并显示控制器动作。
  • 添加了更多细节以获取清晰的想法@vitalik_74

标签: pagination lazy-loading yii2 yii-extensions yii-components


【解决方案1】:

更改方法renderItems

return '<div class="odd">'.implode($this->separator, $rowsOdd) . '</div><div class="even">'.implode($this->separator, $rowsEven) .'</div>';

错误是 ''.implode($this->separator, $rowsOdd) .''。 Div 是even,但数据来自$rowsOdd :)

【讨论】:

  • 是的,我已经改变了这一点,但仍然得到相同的输出返回 '
    '.implode($this->separator, $rowsOdd) 。 '
    '.implode($this->separator, $rowsEven) .'
    ';
猜你喜欢
  • 1970-01-01
  • 2017-05-02
  • 2016-04-10
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多