Варианты:
Простой: закинуть 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 "я сука не сильно четная";
}
}
],