laravel admin 表单的列显示中,若对应字段列(column)为数组形式,如何将其值与现有的 map 映射值后,多个标签显示?
推荐方式
对展示的列进行自定义函数的 display
后,链式调用用 label
,具体代码如下:
$grid->column('prop_ids', '筛选项')->display(function ($prop_ids) {
$prop_id_map = [
4 => '项目功效', 5 => '品牌', 13 => '规格', 903 => '仪器', 905 => '药品', 906 => '材料',
];
$prop_ids = array_map(function ($prop_id) use ($prop_id_map) {
return "{$prop_id_map[$prop_id]}";
}, $prop_ids);
return $prop_ids;
})->label();
这里需要注意的是,如上示例中 prop_ids
当前获取的要确保是数组输出,笔者的示例中的 prop_ids 真实字段值是用逗号分隔的字符串形式数据,在从 model 中获取时,做了逗号分隔的数组提取处理,如下:
class XXX extends Model
{
protected $connection = "xxxx";
protected $table = "xxxxx";
...
public function getPropIdsAttribute($value)
{
return explode(',', $value);
}
public function setPropIdsAttribute($value)
{
$this->attributes['prop_ids'] = implode(',', $value);
}
}