Как включить или отключить сортировку в Yii2 GridView?
Как включить или отключить сортировку в Yii2 GridView?
![Example]()
Ответы
Ответ 1
Вы можете настроить сортировку столбцов в DataProvider
. Например, если вы используете ActiveDataProvider
в своем GridView
, вы можете указать столбцы сортировки, как показано ниже:
$dataProvider = new ActiveDataProvider([
'query' => Model::find(),
'sort' => ['attributes' => ['column1','column2']]
]);
В приведенном выше примере только column1
и column2
сортируются.
Вы также можете отключить сортировку для всех столбцов, как показано ниже:
'sort' =>false
Предлагается ознакомиться с официальным документом Yii2
: Класс yii\data\Sort Как он определяет его:
Сортировка представляет информацию, относящуюся к сортировке.Когда данные нужно сортировать в соответствии с одним или несколькими атрибутами, мы можем использовать Сортировку для представления информации сортировки и создания соответствующих гиперссылок, которые могут привести к действиям сортировки.
Ответ 2
В дополнение к Ali answer, для агрегированных и связанных столбцов вы можете сделать следующее:
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => User::find()->joinWith('role'),
'sort' => ['attributes' => [
//Normal columns
'username',
'email',
//aggregated columns
'full_name' => [
'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
'default' => SORT_DESC
],
//related columns
'role.name' => [
'asc' => ['user_role.name' => SORT_ASC],
'desc' => ['user_role.name' => SORT_DESC],
'default' => SORT_DESC
],
],],
]);
}
Источник: http://www.yiiframework.com/doc-2.0/yii-data-sort.html
Ответ 3
Вы можете отключить сортировку в контроллере следующим образом:
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort->sortParam = false;
Ответ 4
Если вы хотите отключить сортировку из gridview для конкретного столбца, выполните следующие действия:
[
'attribute' => 'name',
'enableSorting' => false
],
используя 'enableSorting' = > false,