Как я могу сделать пользовательскую сортировку в виде сетки 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

Решение

Нашел ответ.

Пожалуйста, добавьте атрибуты 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'
],
]); ?>
14

Другие решения

поскольку myTitle это поле из базы данных, а не пользовательское значение, вы можете просто использовать атрибут. Остальное может быть ненужным, например, по умолчанию class является DataColumn

'columns' => [
[
'attribute' => 'myTitle',
'label' => 'Label',
]
8

Я не совсем уверен, что понимаю ваш вопрос, но опция сортировки может быть включена в ваш modelsearch.php, Так что в вашем случае вы должны делать это так.

$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);

если myTitle поле в базе данных, почему вы используете такой длинный синтаксис Просто

'Columns'=>[
..
'myTitle',
..
],

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

если вам нужен другой заголовок / метка для столбца, используйте метку вместо заголовка, поскольку заголовок является только содержимым ячейки и не может использоваться для сортировки, в то время как метка может. подробности

[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],
2
По вопросам рекламы [email protected]