我在寻找一种简单易用的解决方案来对父元素中的子元素进行排序时遇到问题。我不想让它们按子项的
sorting
属性排序,而是按其他值排序(在本例中为 sort_value
)。
父级拥有属性
child_elements
,子级拥有属性 sort_value
。
我已经尝试将以下语句添加到
defaultOrderings
的 ParentRepository
:
'child_elements.sort_value' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
我也尝试过使用
childElements.sort_value
和 childElements.sortValue
但这两种方式都不起作用。
我找到了一些解决方案,例如使用 vhs-viewhelper 对模板中的子项进行排序,或者将
childRepository
注入到 ParentModel
中,然后在父项的 getter 函数中调用子项上的 findAll
函数(真的很脏)...
在
defaultOrderings
声明中是否存在我没有意识到的错误?或者根本就没有这么简单的方法吗?
childRepository
已将其 defaultOrderings
设置为 sortValue
。用于获取父级的函数是 findAll
或 findByUid
,因此没有自定义存储库函数。
我想要是获取父对象,并按子对象字段对子对象进行排序
sort_value
。
感谢您的帮助。
我认为你在谈论 IRRE 领域。然后你可以通过向父级的 TCA 添加
foreign_default_sortby
对它们进行排序:
'child_elements' => [
...
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_myextension_any_table',
'foreign_field' => 'my_join_field',
'foreign_default_sortby' => 'sort_value DESC',
...
],
],
如果有的话请记得删除
foreign_sortby
,因为它会覆盖foreign_default_sortby
。