Как я могу сортировать с помощью настраиваемого заголовка 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' .. ],