我正在尝试使用formatValue()方法格式化ArrayField的渲染值。
formatValue()可以很好地处理其他类型的字段,但是当我在此方法中返回值时,FieldArray会一直呈现旧的、原始的、非格式化的值。
我试图返回一个数组作为原始值(我认为这是正确的方法),因为原始值也是一个数组,但是只有当我返回null时,显示的值才会改变。
在ArrayField中使用此方法时,EasyAdmin文档没有指定特定的方法
下面是我用来创建字段的代码片段,ArrayField属于一个数组,该数组在我的CrudController的configureFields方法中返回:
ArrayField::new('bienType', 'Type de bien')->hideOnIndex()->formatValue(function ($values) {
foreach ($values as &$value) {
switch ($value) {
case 'localcommercial':
$value = "Local commercial";
break;
case 'chateau':
$value = "Château";
break;
case 'chambredhotes':
$value = "Chambre d'hôtes";
break;
default:
$value = ucfirst($value);
break;
}
}谢谢你的帮助,我已经找遍了,但还是找不到答案。祝你一天愉快!
发布于 2021-09-27 08:22:49
我想我只是做错了,我最终在我的实体类中创建了以下方法,并在CrudController的configureFields()方法中调用它:
添加到实体类中:
public function getReadableBienType(): ?array
{
$formattedValues = [];
foreach ($this->getBienType() as $bienType) {
$formattedValue = null;
switch ($bienType) {
case 'localcommercial':
$formattedValue = "Local commercial";
break;
case 'chateau':
$formattedValue = "Château";
break;
case 'chambredhotes':
$formattedValue = "Chambre d'hôtes";
break;
default:
$formattedValue = ucfirst($bienType);
break;
}
array_push($formattedValues, $formattedValue);
}
return $formattedValues;
}在configureFields()中更改:
ArrayField::new('getReadableBienType', 'Type de bien')->hideOnIndex()https://stackoverflow.com/questions/69317278
复制相似问题