Php Yii2 Gridview不区分大小写的可排序列
我使用yii2,我想以不区分大小写的方式对gridview列“description”进行排序。这是我的代码:Php Yii2 Gridview不区分大小写的可排序列,php,yii2,Php,Yii2,我使用yii2,我想以不区分大小写的方式对gridview列“description”进行排序。这是我的代码: $dataProvider = new ArrayDataProvider([ 'allModels' => $query->find(), 'sort' => [ 'attributes' => ['name','description], ], 'pagination' => [ 'pageSize' =
$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;
}
}
阿克马尔写的很好 如果actionColumn工作不正常,可能需要指定ArrayDataProvider的键,以获得正确的id
$dataProvider = \app\dataproviders\ArrayDataProvider([
'allModels' => $query->find(),
'key'=> 'id',
如果要在gridview中过滤数据,可以使用以下解决方案:
我也试过了,效果很好!!
(最后一个技巧是:如果您想以区分大小写的方式进行过滤,可以使用stripos而不是strpo)。
祝你好运
$dataProvider = \app\dataproviders\ArrayDataProvider([
'allModels' => $query->find(),
'key'=> 'id',