TYPO3 9.5 从父元素中对子元素进行排序

问题描述 投票:0回答:1

我在寻找一种简单易用的解决方案来对父元素中的子元素进行排序时遇到问题。我不想让它们按子项的

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

感谢您的帮助。

typo3 typo3-9.x
1个回答
0
投票

我认为你在谈论 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

参见:TCA 参考:IRRE /foreign_default_sortby

© www.soinside.com 2019 - 2024. All rights reserved.