在 EasyAdmin 中使用 AssociationField 呈现为多个 bagdes

Render as multiple bagdes with an AssociationField in EasyAdmin

我遇到了问题

我这样做是为了呈现多对多关系的“字符串”:

->formatValue(function ($value, $entity) {
return implode(",",$entity->getCategories()->toArray());
})

效果还不错!但我有一个问题!

如何在索引中呈现多个徽章?因为此方法呈现一个具有“值 1,值 2”的独特徽章......我想在同一行中看到 2 个徽章,一个具有“值 1”,另一个具有“值 2”。 有人知道怎么做吗?

我希望我的问题很清楚。 诺埃

您需要创建一个执行此操作的自定义模板。

使用简单的管理 ->setTemplatePath() 方法覆盖您的字段模板。

示例:

->setTemplatePath('fields/yourEntity/categories.html.twig')

并且您的 twig 模板循环遍历每个值以使用多个徽章呈现它:

{% for value in field.value %}
    <span class="badge badge-info">
        {{ value }}
    </span>
{% else %}
    <span class="badge badge-secondary">
        None
    </span>
{% endfor %}

您应该为每个类别获得一个徽章,您还可以使用 {{ value }} 及其任何方法以不同的方式呈现这些徽章(使用不同的颜色?)。