arrays - 如何在 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 等....)
任何人都可以帮助我建立这种类型的搜索?非常感谢,希望清楚。
解决方案
您为 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,
推荐阅读
- google-apps-script - 在 gDocs 中使用 gApp 脚本将光标移动到选择和“删除下一行”
- dataweave - DataWeave 文本/html 输出不再适用于 Mule 4.2.2+
- azure - SFTP 连接自定义/参数化
- android - 如何在手机上访问 HttpServer?
- php - json php用ajax什么都不返回
- amazon-s3 - AWS PHP SDK S3:PutObject() 访问被拒绝,即使 SDK 用户账户具有完全权限
- ipywidgets - 如何调整 matplotlib 图形的大小以自动匹配 ipywidgets.Output() 大小?
- objective-c - 如何在目标 C 中使用 SHA512 创建 RSA 密钥对
- php - 试图在 Laravel 中组织 toJson 数据
- html - 支持IE!解决 IE 中的嵌套媒体查询?