【发布时间】:2018-06-18 13:36:16
【问题描述】:
在我自己的扩展中,我使用 mm 表在类别和项目之间建立了双向 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是本地化item记录的uid,sorting_local对所有三个记录都等于0。我建议这会导致错误的前端输出,尽管主要语言记录仍然具有旧的排序值。这就是它在后端的类别表单中正确显示的原因。
为什么我在项目更新后发现了这 3 条附加记录。主语言的类别 uid 与项目的本地化 uid 的组合不能正确。
有什么建议吗?
【问题讨论】:
-
是更新后端还是前端的记录?
extbase是否参与前端? -
更新仅在后端完成。前端输出是用 extbase/fluid 完成的