Как я могу сортировать с помощью настраиваемого заголовка gridview
?
Пожалуйста, дайте разницу между label
и header
в Yii2
gridview
Yii2
gridview
.
Вот мой код:
<?= 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
ли 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' .. ],