@bizzonaru

Как между каждым четным row gridview отрисовать отдельный блок?

Нужно в каждой четной итерации отрисовки row показывать отдельный div блок. Не ясно каким образом можно обратиться к некоторому внутреннему итератору.
<?= GridView::widget([
                    'dataProvider' => $dataProvider,
                    },                    
                    'showHeader' => false,
                    'columns' => [
                        [
                            'attribute' => 'title',
                            'format' => 'html',
                            'value' => function(Model $model) { 
                                return "
                                    <div class='container-fluid info'>
                                        <div class='row'>  
                                           // здесь отображаются данные 
                                        </div> 
                                   </div>     
                                   // Этот блок нужно показывать в каждой четной итерации
                                   <div class='container-fluid'>
                                        <div class='row'>
                                            test 
                                        </div>
                                   </div>

                                "; 
                            }
                        ],
                    ],
                ]); ?>
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Варианты:
Простой: закинуть div в каждый row и через css скрыть нечетные
Сложный: сделать свой gridview и унаследовать от базового и переопределить метод, который формирует row. Возможно получится сделать это через behaviors, которые можно присобачить к gridview. Не пользовался этим, но возможно именно через behaviors можно переопределить метод, если не изменяет память это renderTableRow
Правильный:
в value у Вас function(Model $model) , а на самом деле туда передаются 4 параметра ($model, $_key, $_index, $_column)
соответственно вы можете проверить $_index на четность
'columns' => [
                        [
                            'attribute' => 'title',
                            'format' => 'html',
                            'value' => function($model, $key, $index) {
if(($index % 2) == 0){
 return "я четная строка";
}else{
 return "я сука не сильно четная";
}
                            }
                        ],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы