在我自己的扩展中,我使用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的组合可能不正确。
有什么建议吗?
答案 0 :(得分:1)
我可以通过在items表中设置l10n_mode => ''
来使其工作。说实话,我并不完全明白现在发生了什么,但它确实有效。