如何在 Yii2 视图中更改数组的 select 选项中的值?

How to change value in the select option of an array in the Yii2 view?

我使用 Yii2 Framework 并且我为 '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']];
}

一切正常。但是现在我想更改数组 select 选项中的值。例如,如果值为 'OFMCap',在数组 selection 中我想显示 'OFMCap - Ordo fratrum minorum capuccinorum'。目前各种 selection 仅显示首字母缩略词(例如 OFMCap 等....)

谁能帮我建立这种类型的搜索? 非常感谢,希望能说清楚

您为 ID 和描述映射了同一列

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

ordine      description
-----       -----------
OFMCap,     Ordo fratrum minorum capuccinorum

所以 find() return(至少)这两个值的集合

$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 attribure 使用小写名称 .. 所以 manage/adapted 大小写符合您的需要

但是如果你直接需要 map 。你可以对 map() 的数组结果进行操作

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

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

'filter' => $myMap,