Группировка выводв в ListView

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

Группировка выводв в ListView

Сообщение Gil707 »

Привет, такая ситуация:
Есть модель матч, у нее несколько полей типа id, date, player1, player2, id_t - id турнира...
Есть модель турнир, у турнира может быть несколько матчей - hasMany, у матча hasOne - к турниру
Надо вывести списком все матчи, делаю через ListView, searchModel отдает dataProvider, во вьюшке -

Код: Выделить всё

 <?= \yii\widgets\ListView::widget([
            'dataProvider' => $dataProvider,
            'options' => [
                'tag' => 'div',
                'class' => 'matches__list',
            ],
            'layout' => '{items}',
            'itemView' => '_match',
            'emptyText' => 'Не найдено',
        ]) ?>
Они выводятся постранично в таком виде

Турнир 1
  • Матч 1
Турнир 1
  • Матч 2
Турнир 1
  • Матч 3
Турнир 2
  • Матч 1
Турнир 2
  • Матч 2
А нужно, чтобы

Турнир 1
  • Матч 1
  • Матч 2
  • Матч 3
Турнир 2
  • Матч 1
  • Матч 2
Можно это сделать непосредственно перед выводом во вьюшке? Слышал, что можно передать в листвью шаблон по которому нужно группировать, но не могу найти что-то как и где...

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Группировка выводв в ListView

Сообщение andku83 »

Судя по всему в dataPriovider вы передаете список матчей.
А если вы туда будете передавать турниры со списком матчей (Tournament::find()...->with('matches')), а в listView соответственно будете рендерить как вам нужно:

Код: Выделить всё

$model->name;
foreach ($model->matches as $match) {
    $match->name;
}

Ответить