【问题标题】:Yii2 List View: how to generate 2 different parent div to seprate odd and even recordsYii2列表视图:如何生成2个不同的父div来分隔奇数和偶数记录
【发布时间】:2015-03-09 12:32:58
【问题描述】:

我需要 Yii2 ListView 生成 2 个不同的父 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 gridview yii2 yii2-advanced-app


【解决方案1】:

您可以像这样扩展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',       
]);

【讨论】:

  • 感谢回复我试试这个
  • 很好的解决方案我尝试了这个并解决了我的问题。真的很感激
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多