以编程方式更改模型的内联元素的顺序

时间:2019-04-05 09:20:22

标签: typo3 typo3-8.x

我需要以编程方式更改模型内联组中元素的顺序。 确切地讲,我需要通过TCEmainHook将某些子级移动到内联列表的顶部。 有什么想法请如何在不对MM表进行肮脏的SQL查询和操作排序的情况下实现此目标?我尝试了DataHandler并操纵了ObjectStorage,但是找不到解决方案。 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

为此避免涉及Extbase。根据您的用例,您可以使用“ afterDatabaseOperations”或“ processCmdmap_postProcess”。执行此操作的方法是侦听父记录的更新,当更新完成时(这是因为您将处于后钩状态),您可以使用任意喜欢的规则对关系进行重新排序。

SQL查询并不是很麻烦-但是,如果您尝试在非Exttbase上下文中使用它,Extbase肯定是一团糟,尤其是持久性会给您带来一些问题。可以通过单个查询对特定列的所有关系进行重新排序,因为从描述用例的方式(将某些示例移至顶部,将其他示例保留在原处)来判断,您只需要更新已确定的用例的“排序”列即可。给定表中的UID列表。您可以阅读当前排序的含义,并确定需要在UPDATE查询中减去的数字,以将其更改为低于当前最低排序值的值。

例如:

UPDATE myrelationtable SET sorting = sorting - 1200 WHERE uid IN (1,2,3)