Как я выполняю пользовательскую сортировку по сетке Yii2?
Как я могу сортировать с помощью настроенного заголовка 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
?
Вот мой экран вывода:
Я хочу, чтобы Заголовок страницы, Статус, Дата изменения были активны.
Заранее благодарю.
3 answers
Нашел ответ.
Пожалуйста, добавьте атрибуты в 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'
],
]); ?>
Я не очень уверен, что понимаю ваш вопрос, но опция сортировки может быть включена в ваш modelsearch.php
. Так что в вашем случае вы должны поступить вот так.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);
Если myTitle
является полем в базе данных, почему вы используете такой длинный синтаксис. Просто
'Columns'=>[
..
'myTitle',
..
],
Должно работать нормально и должно быть активным для сортировки по вашему желанию
Если вам нужен другой заголовок/метка для столбца, используйте метку вместо заголовка, так как заголовок - это только содержимое ячейки и его нельзя использовать для сортировки, в то время как метка мочь. подробности
[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],