Dans le développement actuel des projets Yii2.0, nous rencontrons souvent l'utilisation de la fonction de tri fournie avec Yii2.0.
Lors de l'affichage de plusieurs éléments de données, il est généralement nécessaire de trier les données en fonction des colonnes spécifiées par l'utilisateur. Yii utilise l'objet yiidataSort pour représenter des informations sur le schéma de tri. En particulier :
1. attributs précise les attributs selon lesquels les données sont triées. Un attribut peut être un simple attribut de modèle ou un attribut composite qui combine plusieurs attributs de modèle ou colonnes de base de données. Plus de détails sont donnés ci-dessous.
2.attributOrders donne le sens de tri actuellement défini pour chaque attribut.
3. commandes donne le sens de tri sous forme de colonnes de bas niveau.
Pour utiliser yiidataSort, vous devez d'abord déclarer quels attributs peuvent être triés. Obtenez ensuite les informations de tri actuellement définies à partir des attributsOrders ou des commandes, puis utilisez-les pour personnaliser les requêtes de données.
(Apprentissage recommandé : cadre yii )
Voici la méthode spécifique d'utilisation de la fonction de tri :
1. Définissez les règles de tri <.>
Faites attention à l'introduction de la classe Sort, par exemple : utilisez yiidataSort;// 设置排序字段 $sortObject = new Sort([ 'sort' => $sort, 'defaultOrder' => ['id' => SORT_DESC], 'attributes' => [ 'id' => [ 'asc' => ['id' => SORT_ASC], 'desc' => ['id' => SORT_DESC], ], 'user_name' => [ 'asc' => ['ecs_users.user_name' => SORT_ASC], 'desc' => ['ecs_users.user_name' => SORT_DESC], ], 'add_time' => [ 'asc' => ['add_time' => SORT_ASC], 'desc' => ['add_time' => SORT_DESC], ], ], ]);2 Utilisez la fonction de pagination de Yii2.0 et ajoutez le tri
// 处理分页 $queryClone = clone $query; $totalCount = $queryClone->count(); $pages = new Pagination(['defaultPageSize'=>$rows,'totalCount'=>$totalCount,'pageSizeLimit'=>false]); $query = $query->offset($offset) ->limit($pages->limit) ->orderBy($sortObject->orders) ->asArray() ->all();3. Modifier le code sous-jacent du tri Yii2.0
Le code source correspondant sous-jacent : supplier/yiisoft/yii2.0/data/Sort.php1 Ajouter un attribut à la classe Sort : public $sort;2. Dans le code source approx. Ajoutez le code suivant à la ligne 249 : (implémentez post pour obtenir les paramètres de pagination)
// get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数 if(!isset($params[$this->sortParam])){ $params[$this->sortParam] = $this->sort; }3. Recevez les paramètres de pagination dans le contrôleur, comme suit :
$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id'; $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;Remarque : L'identifiant dans Yii2.0 représente la valeur correcte en fonction de l'identifiant. Tri dans l'ordre, -id signifie trier dans l'ordre inverse par identifiant. C'est également la raison pour laquelle la déclaration 2 ci-dessus est traitée de cette manière.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!