gpt4 book ai didi

php - Yii2 Gridview 不区分大小写的可排序列

转载 作者:行者123 更新时间:2023-12-04 17:38:02 25 4
gpt4 key购买 nike

我使用 yii2,我想让 gridview 列“描述”以不区分大小写的方式排序。这是我的代码:

$dataProvider = new ArrayDataProvider([
'allModels' => $query->find(),
'sort' => [
'attributes' => ['name','description],
],
'pagination' => [
'pageSize' => $this->pageSize,
],
]);

当我点击列描述进行排序时,它显示如下:

  • 职位名称
  • 博士
  • 老师
  • 医生
  • 老师

如您所见,排序区分大小写 我想排序不区分大小写,我该怎么做?有什么想法吗?

最佳答案

为了以不区分大小写的方式对 ArrayDataProvider 的行进行排序,您应该扩展 ArrayDataProvider 本身,因为它在内部使用 ArrayHelper::multisort,如果您希望它按照您希望的方式排序,您必须通过 SORT_STRING | SORT_FLAG_CASE 作为该方法的第四个参数。默认情况下,它的值等于 SORT_REGULAR 常量。

这里是实现:

<?php

namespace app\dataproviders;

use yii\helpers\ArrayHelper;

/**
* Class ArrayDataProvider
*/
class ArrayDataProvider extends \yii\data\ArrayDataProvider
{

/** @inheritdoc */
protected function sortModels($models, $sort)
{
$orders = $sort->getOrders();
if (!empty($orders)) {
ArrayHelper::multisort(
$models,
array_keys($orders),
array_values($orders),
SORT_STRING | SORT_FLAG_CASE
);
}

return $models;
}
}

然后使用扩展类代替 \yii\data\ArrayDataProvider

使用示例:

$dataProvider = \app\dataproviders\ArrayDataProvider([
'allModels' => $query->find(),
'sort' => [
'attributes' => ['name','description'],
],
'pagination' => [
'pageSize' => $this->pageSize,
],
]);

关于php - Yii2 Gridview 不区分大小写的可排序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55845586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com