【发布时间】:2023-04-01 13:20:01
【问题描述】:
我在 Extbase TYPO3-Extension 中使用了一些具有 m:n 关系的域,并希望从 m:n-relation 子级获得按属性分组的输出,理想情况下尊重包括具有多个关系的条目。
假设我有书籍和类别。书籍有一些“title”和一个“memberOfCategories”属性,Category 有一些“name”和一个“areBooks”属性。一般的 m:n 事情(使用一些 mn-table 和 TCA 中的必要字段等)工作正常。
使用流体,一本书的所有类别的输出都可以正常工作,以及具有特定类别的所有书籍等等。
但我需要(在书籍视图/动作上下文中!)一些类似的输出(包括属于多个类别的书籍的“重复”输出):
Category A
Book A
Book B
Category B
Book A
Book C
(No Category)
Book D
Book E
我尝试使用f:groupedFor ViewHelper,但这并不能如我所愿。按子属性 (category.name) 分组无法按预期工作:
<f:groupedFor each="{books}" as="booksOfThisCat" groupBy="memberOfCategories.name" groupKey="memberOfCategories.name">
<h3>{memberOfCategories.name} (should be category name)</h3>
<f:for each="{booksOfThisCat}" as="book">
<li>{book.title}</li>
</f:for>
</f:groupedFor>
我的第一次尝试是仅按 memberOfCategories 进行分组 - 但这也导致了不同且无用的结果,因为 memberOfCategories 仅引用“数字”/关系集,因此分组是垃圾。
当然,如果我在类别操作中工作,这一切都会很容易,这只是一个简单的 for each category { for each areBooks } 事情,但我需要在有关书籍的操作/视图中输出。
我很确定我只是太笨或太盲目了——并且可能已经把一些读者与略带皮江语的英语混淆了;-),无论如何,如果有人对此有所暗示,那就太好了。发现一些关于按日期分组的类似问题,使用自定义视图助手解决,但我认为可能/应该有一个更简单的解决方案。
【问题讨论】:
-
哦哦 - 现在我自己搞定了,它就是这么简单:我只是将类别存储库添加/注入到我的书籍控制器并将其所需的输出(例如 findall)分配给我的操作/查看,一切都很好,因为它已经在类别控制器下。