【问题标题】:bi-directional relation loses sorting when child record is saved保存子记录时双向关系丢失排序
【发布时间】: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 完成的

标签: typo3 typo3-8.x


【解决方案1】:

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

https://forge.typo3.org/issues/57272找到提示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多