web-dev-qa-db-ja.com

Yii2 GridViewでソートを有効または無効にする方法は?

Yii2 GridViewでソートを有効または無効にする方法?

Example

19
rdanusha

DataProviderで列の並べ替えをカスタマイズできます。たとえば、ActiveDataProviderGridViewを使用する場合、以下のようなソート可能な列を指定できます。

$dataProvider = new ActiveDataProvider([
    'query' => Model::find(),
    'sort' => ['attributes' => ['column1','column2']]
]);

上記の例では、column1column2のみがソート可能です。

以下のようにすべての列のソートを無効にすることもできます。

'sort' =>false

Yii2の公式ドキュメントをご覧になることをお勧めします。 Class yii\data\Sort 定義どおりそれ:

並べ替えは並べ替えに関連する情報を表します。1つまたは複数の属性に従ってデータを並べ替える必要がある場合、並べ替えを使用して並べ替え情報を表し、適切な情報を生成できます。ソートアクションにつながる可能性のあるハイパーリンク。

37

ALiの答えに加えて、集計列および関連列については、次のことができます。

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

15
Ehsan Khaveh

特定の列のグリッドビューからの並べ替えを無効にする場合は、次のようにします。

 [
     'attribute' => 'name',
     'enableSorting' => false
 ],

'enableSorting' => falseを使用して

6
Priyanka

次のようにコントローラーでソートを無効にできます:

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort->sortParam = false;
4
pa3py6aka