首页 > 解决方案 > 如何在 Yii2 视图中更改数组的选择选项中的值?

问题描述

我使用 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 等....)

任何人都可以帮助我建立这种类型的搜索?非常感谢,希望清楚。

标签: arraysviewyii2

解决方案


您为 id 和 description 映射了同一列

假设您的 Elenchi 模型至少包含两列 ordine 和 description 值:

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() 的数组结果

$myMap = ArrayHelper::map($ordine_nome,'id','description'),

$myMap['OFMCap'] = 'OFMCap - Ordo fratrum minorum capuccinorum';

'过滤器' => $myMap,


推荐阅读