Comment activer et désactiver le tri dans Yii2 GridView?
Vous pouvez personnaliser le tri des colonnes dans votre DataProvider
. Par exemple, si vous utilisez ActiveDataProvider
dans votre GridView
, vous pouvez indiquer des colonnes triables comme ci-dessous:
$dataProvider = new ActiveDataProvider([
'query' => Model::find(),
'sort' => ['attributes' => ['column1','column2']]
]);
Dans l'exemple ci-dessus, seuls column1
Et column2
Sont triables.
Vous pouvez également désactiver le tri pour toutes les colonnes comme ci-dessous:
'sort' =>false
Il est suggéré de jeter un œil au document officiel de Yii2
: Classe yii\data\Sort Comme il le définit:
Trier représente les informations pertinentes pour le tri. Lorsque les données doivent être triées selon un ou plusieurs attributs, nous pouvons utiliser Trier pour représenter les informations de tri et générer des informations appropriées. des hyperliens pouvant conduire à des actions de tri.
En plus de la réponse d'ALi, pour les colonnes agrégées et connexes, vous pouvez effectuer les opérations suivantes:
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
],
],],
]);
}
Source: http://www.yiiframework.com/doc-2.0/yii-data-sort.html
Si vous souhaitez désactiver le tri à partir de la vue de grille pour une colonne particulière, procédez comme suit:
[
'attribute' => 'name',
'enableSorting' => false
],
en utilisant 'enableSorting' => false
Vous pouvez désactiver le tri dans le contrôleur comme ceci:
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort->sortParam = false;