0

Загрузка первой информации прекрасна, но когда я нажимаю на загрузку больше, мои данные второй страницы попадают даже в div. Я генерация списка, как это:yii2 odd/even listview с нагрузкой больше разбивки на страницы

<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 его просто погрузочные все записи внутри даже ДИВ и загружать больше aoption тоже приходит в еще Див

+0

Пройдите скриншоты. И показать действие контроллера. –

+0

добавил кое-что, чтобы получить ясное представление @ vitalik_74 – Nadeem

ответ

0

Изменение метода renderItems:

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

Ошибка в '' .implode ($ this-> разделитель, $ rowsOdd). ''. Div - even, но данные от $rowsOdd :)

+0

Да, я уже изменил это, но все равно получаю такой же выход return '

'.implode($this->separator, $rowsOdd) . '
'.implode($this->separator, $rowsEven) .'
'; – Nadeem