我使用Yii2框架,我有这个数组过滤器的'Ordine'列:
[
'attribute' => 'Ordine',
'filterType' => GridView::FILTER_SELECT2,
'filter' => ArrayHelper::map($ordine_nome,'id','ordine'),
'filterWidgetOptions'=>['pluginOptions'=>['allowClear'=>true]],
'filterInputOptions'=>['placeholder'=>'Tutti...'],
'label' => "Ordine",
'width' => '2%',
],
现在,数组以这种方式构建:
$ordini=Elenchi::find()->asArray()->orderby(['Ordine' => SORT_ASC])->all();
foreach($ordini as $l){
$ordine_nome[] = ['id'=>$l['Ordine'],'ordine'=>$l['Ordine']];
}
没关系。但现在我想改变数组选择选项的值。例如,如果值是'OFMCap',在数组选择中我想显示'OFMCap - Ordo fratrum minorum capuccinorum'。目前,各种选择只显示缩略词(例如OFMCap等....)
谁能帮我建立这种类型的搜索?非常感谢,我希望我能说清楚。
您已经为id和描述映射了相同的列
假设您的Elenchi模型包含至少两列顺序和描述值:
ordine description
----- -----------
OFMCap, Ordo fratrum minorum capuccinorum
所以find()返回(至少)这两个值的集合
$ordini=Elenchi::find()->asArray()->orderby(['Ordine' => SORT_ASC])->all();
那么你应该将数组设置为
foreach($ordini as $l){
$ordine_nome[] = ['id'=>$l['ordine'],'description'=>$l['description']];
}
和你映射为
'filter' => ArrayHelper::map($ordine_nome,'id','description'),
我使用小写的db属性名称。因此,管理/调整案例以满足您的需求
但是如果你直接需要map,你可以使用map()
处理数组结果$myMap = ArrayHelper::map($ordine_nome,'id','description'),
$myMap['OFMCap'] = 'OFMCap - Ordo fratrum minorum capuccinorum';
"过滤"=比;美元关联,