保存子记录时,双向关系会丢失排序

时间:2018-06-18 13:36:16

标签: typo3 typo3-8.x

在我自己的扩展中,我使用mm-table在类别和项目之间存在双向mm关系。

mm-table有4列uid_local,uid_foreign,sorting,sorting_foreign。

两个对象表的TCA(仅限重要部分) 类别表:

'items' => array(
    'l10n_display' => 'defaultAsReadonly',
    'l10n_mode' => 'exclude',
    'config' => array(
        'type' => 'select',
        'renderType' => 'selectMultipleSideBySide',
        'foreign_table' => 'tx_records_domain_model_item',
        'foreign_table_where' => ' AND tx_records_domain_model_item.sys_language_uid = ###REC_FIELD_sys_language_uid###',
        'MM' => 'tx_records_item_category_mm',
    ),
),

和项目表

'categories' => array(
    'exclude' => 0,
    'l10n_display' => 'defaultAsReadonly',
    'l10n_mode' => 'exclude',
    'config' => array(
        'type' => 'select',
        'renderType' => 'selectMultipleSideBySide',
        'foreign_table' => 'tx_records_domain_model_category',
        'foreign_table_where' => ' AND tx_records_domain_model_category.sys_language_uid = ###REC_FIELD_sys_language_uid###',
        'MM' => 'tx_records_item_category_mm',
        'MM_opposite_field' => 'items',
    ),
),

我有4种语言。现在我的问题。

我有一个带有uid 7的类别。这些项目在我的选择字段中添加和排序。前端的输出按照后端设置的给定顺序。

但是现在 - 当我更新该项目中的一个项目时,项目将放在前端的所有其他项目之前,而后端的排序仍然是项目更新之前的排序。如果我之后保存类别,前端将再次显示所需的排序。

在我的研究过程中,我发现mm表显示了奇怪的记录。当前端输出正确时,我在类别中每个项目有一条记录,排序从1到13。 在项目更新后,我在mm表中找到三个新记录。三种其他三种语言。这三个记录显示我的类别local_uid == 7,foreign_uids是本地化项目记录的uid,sorted_local对于所有三个记录都等于0。我建议这导致错误的fornt end输出,尽管主语言记录仍然具有旧的排序值。这就是为什么它在后端的类别表单中正确显示的原因。

为什么在项目更新后找到这3个附加记录。主要语言类别uid与项目的本地化uid的组合可能不正确。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我可以通过在items表中设置l10n_mode => ''来使其工作。说实话,我并不完全明白现在发生了什么,但它确实有效。

https://forge.typo3.org/issues/57272

上找到提示