我有一个实体Product
,它与实体Category
具有多对多关系
/**
* @ORM\ManyToMany(targetEntity="App\Domain\Category", inversedBy="stalls")
*/
private $categories;
//...
/**
* @return Collection|Category[]
*/
public function getCategories(): Collection
{
return $this->categories;
}
在ProductCrudController
类中,我有以下configureFields
方法:
public function configureFields(string $pageName): iterable
{
return [
Field::new('name'),
Field::new('description'),
AssociationField::new('categories'),
];
}
当创建/编辑一个Product
时,关系中的一切都按预期工作,但在产品列表中,我看到的是产品的类别数,而不是显示相关的类别。
在下面的图片中,第一个产品有1个类别,列表中的第二个产品有2个不同的类别。我希望类别的名称显示在这里。
作为旁注:Category
类具有返回类别名称的__toString
方法。
编辑:
我要查找的行为与下图中的Tags
列相同:
6条答案
按热度按时间8gsdolmq1#
你可以这样做一个模板:
然后将其添加到字段中
ie3xauqp2#
您可以使用
formatValue
方法格式化该值,如下所示:abithluo3#
我的详细信息页面也有同样的问题,所以我没有使用模板,而是根据
pagename
更改字段类型myzjeezk4#
我会这样做:
v9tzhpje5#
在the most upvoted answer的基础上构建,您可以像这样使Twig代码段通用:
这样你就可以在CRUD控制器中设置链接目的地,并在任何地方使用模板。当没有设置CRUD控制器时,你仍然会枚举单个条目,但不作为链接。
在我的TeamCrudController中,我这样做:
或者,如果您希望成为默认行为,请通过将以下内容放置在
templates/bundles/EasyAdminBundle/crud/field/association.html.twig
中来覆盖EasyAdminBundle模板:cnh2zyt36#
在积垢控制器中使用
ArrayField::new('categories'),
代替AssociationField::new('categories'),
。现在创建/编辑产品时,显示不同,但足够好