Как в GridView tr th добавить класс?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
i-programmer
Сообщения: 73
Зарегистрирован: 2015.08.24, 18:50

Как в GridView tr th добавить класс?

Сообщение i-programmer »

У виджета GridView можно настроить классы для отображения, например

tableOptions для тега table, rowOptions - для строк и т.д. Но я не могу никак найти настройку, чтобы добавить класс в

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

 table > thead > tr > th
Как можно добавить класс в этот тег?

Если есть возможность вообще свой шаблон написать для таблицы - было интересно узнать как. Может быть так проблему решил бы.

Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Как в GridView tr th добавить класс?

Сообщение futbolim »

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

<?= GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                [
                    'attribute' => 'id',
                    'headerOptions' => ['width' => '50px', 'class' => 'asd'],
                ],
            ],
        ]); ?>

i-programmer
Сообщения: 73
Зарегистрирован: 2015.08.24, 18:50

Re: Как в GridView tr th добавить класс?

Сообщение i-programmer »

futbolim писал(а):
2019.04.12, 23:02

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

<?= GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                [
                    'attribute' => 'id',
                    'headerOptions' => ['width' => '50px', 'class' => 'asd'],
                ],
            ],
        ]); ?>

Для каждой колонки в каждом GridView добавлять? Так себе идея.

i-programmer
Сообщения: 73
Зарегистрирован: 2015.08.24, 18:50

Re: Как в GridView tr th добавить класс?

Сообщение i-programmer »

Сделал кастомный класс

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

class DataColumn extends \yii\grid\DataColumn {

	public function renderHeaderCell() {
		$provider = $this->grid->dataProvider;
		if ($this->attribute !== null && $this->enableSorting &&
			($sort = $provider->getSort()) !== false && $sort->hasAttribute($this->attribute)) {
			if (($direction = $sort->getAttributeOrder($this->attribute)) !== null) {
				Html::addCssClass($this->headerOptions, 'sorting_' . ($direction === SORT_DESC ? 'desc' : 'asc'));
			} else {
				Html::addCssClass($this->headerOptions, 'sorting');
			}
		}
		return Html::tag('th', $this->renderHeaderCellContent(), $this->headerOptions);
	}
}
, который использую у грида

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

public $dataColumnClass = 'app\widgets\grid\DataColumn';

Ответить