为什么 inline/IRRE 条记录得到 sys_language_uid=0?

Why do inline/IRRE records get sys_language_uid=0?

当在 sys_language_uid = 2 中创建 tt_content 记录(无翻译/l10n_parent = 0)并在 type => 'inline'tx_foo_slider_slides 中插入字段时(定义下面),tx_foo_domain_model_slide 中新创建的记录是用 sys_language_uid = 0 创建的。将图像添加到幻灯片的图像字段会创建 sys_file_referencesys_language_uid = 2这是正确的吗?如果不是,我该如何更改? 我希望所有记录(tt_contenttx_foo_slider_slidessys_file_reference)都是用 sys_language_uid = 2 创建的。似乎更新前创建的记录确实将 sys_language_uid 设置为 2,但我不确定 8 和 9 之间发生了什么变化:这是核心变化吗?或者我的 site/language 配置? sys_language_uid 在 TCA 中有默认值 0,但删除它并创建其他记录并没有显示任何不同的行为。

当尝试通过 ExtBase 存储库加载记录时,我似乎不得不使用 setRespectSysLanguage(false):

可能出了什么问题?可能需要改变什么?我认为以非默认语言创建记录是受支持的案例?对我来说,根本原因似乎是记录是使用错误的语言集创建的。

我的配置:

'image' => [
  'label' => $ll.'tx_foo_domain_model_slide.image',
  'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
    'image',
    [
      'appearance' => [
        'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference',
      ],
      'overrideChildTca' => [
        // types ...
      ],
      'minitems' => 1,
      'maxitems' => 1,
    ],
    $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] .',m4v,mp4v,mp4'
  ),
],
[
  'label' => $ll . 'slider.slides',
  'config' => [
     'type' => 'inline',
     'appearance' => [
       'collapseAll' => true,
       'expandSingle' => true,
     ],
     'foreign_field' => 'slider',
     'foreign_sortby' => 'sorting',
     'foreign_table' => 'tx_foo_domain_model_slide',
     'maxitems' => 100,
     'minitems' => 0,
   ],
 ],

这种情况下的问题是,tx_foo_domain_model_slide.sys_language_uid 定义为:

'sys_language_uid' => [
  'config' => [
    'type' => 'passthrough',
    'default' => '',
  ],
],

根据 TCA docs:

  • FormEngine does not render anything for passthrough types by default. But it can be combined with a custom renderType to make it render something. A user type is better suited for such use cases, though.
  • Type passthrough field values are usually also not rendered at other places in the backend.

这导致 sys_language_uid 未被设置(并保持为 0)。因此,sys_language_uid 必须定义为 'type => 'select'` 或类似的。要隐藏它,可以将它放在 hidden palette, as described here.