Как я могу сортировать с настроенным gridview
заголовок?
Пожалуйста, дайте разницу между label
а также header
в Yii2
gridview
виджет dataprovider
,
Вот мой код:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'header' => 'Page Title',
'label' => 'Title'
],
]); ?>
Делать header
а также label
выполнять ту же функцию?
Как я могу выполнить сортировку в $data->myTitle
?
Вот мой экран вывода:
Я хочу, чтобы заголовок страницы, статус, дата изменения должны быть активными.
Заранее спасибо.
Нашел ответ.
Пожалуйста, добавьте атрибуты ActiveDataProvider в вашу модель поиска.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 5,
],
'sort' => ['attributes' => ['myTitle']],
]);
Добавьте параметр атрибута в виджет:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'attribute' => 'myTitle',
'label' => 'Page Title'
],
]); ?>
поскольку myTitle
это поле из базы данных, а не пользовательское значение, вы можете просто использовать атрибут. Остальное может быть ненужным, например, по умолчанию class
является DataColumn
'columns' => [
[
'attribute' => 'myTitle',
'label' => 'Label',
]
Я не совсем уверен, что понимаю ваш вопрос, но опция сортировки может быть включена в ваш modelsearch.php
, Так что в вашем случае вы должны делать это так.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);
если myTitle
поле в базе данных, почему вы используете такой длинный синтаксис Просто
'Columns'=>[
..
'myTitle',
..
],
должен работать нормально и должен быть активен для сортировки, как вы хотите
если вам нужен другой заголовок / метка для столбца, используйте метку вместо заголовка, поскольку заголовок является только содержимым ячейки и не может использоваться для сортировки, в то время как метка может. подробности
[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],