Localization Typo3 7.6 extbase存储库匹配仅影响非本地化记录

Localization Typo3 7.6 extbase存储库匹配仅影响非本地化记录,localization,repository,matching,extbase,typo3-7.6.x,Localization,Repository,Matching,Extbase,Typo3 7.6.x,我想为TYPO3 CMS 7.6创建一个自己的extbase扩展。扩展必须以不同的语言运行。我发现,存储库匹配只适用于非本地化记录 我的存储库功能如下所示: public function findNew() { $query = $this->createQuery(); $query->getQuerySettings()->setRespectSysLanguage(true); $query->matching($query->equals('n

我想为TYPO3 CMS 7.6创建一个自己的extbase扩展。扩展必须以不同的语言运行。我发现,存储库匹配只适用于非本地化记录

我的存储库功能如下所示:

public function findNew() {
  $query = $this->createQuery();
  $query->getQuerySettings()->setRespectSysLanguage(true);
  $query->matching($query->equals('new', 1));
  return $query->execute();
}
此函数表示:显示new=1的所有记录

例如: 我有一个默认记录,其复选框“New”未激活。现在,我创建了该记录的本地化版本,并将“新建”复选框设置为“已激活”

如果我以默认语言执行函数findNew(),记录将不会显示。如果我用另一种语言执行函数,即使设置了“New”-标志,记录也不会显示

换句话说:匹配只影响默认/父记录

我正在使用以下配置设置:

config {
  sys_language_mode = strict
  sys_language_overlay = hideNonTranslated
}
[编辑:] 以下是生成的完整SQL查询:

SELECT tx_extension_domain_model_table.*
FROM
tx_extension_domain_model_table
WHERE
  tx_extension_domain_model_table.new = '1'
  AND (
    tx_extension_domain_model_table.sys_language_uid = -1
    OR (
      tx_extension_domain_model_table.sys_language_uid = 1
      AND tx_extension_domain_model_table.l10n_parent = 0
    )
    OR (
      tx_extension_domain_model_table.sys_language_uid = 0
      AND tx_extension_domain_model_table.uid IN (
        SELECT tx_extension_domain_model_table.l10n_parent
        FROM tx_extension_domain_model_table
        WHERE tx_extension_domain_model_table.l10n_parent > 0
          AND tx_extension_domain_model_table.sys_language_uid = 1
          AND tx_extension_domain_model_table.deleted = 0
      )
    )
  )
  AND tx_extension_domain_model_table.deleted = 0
  AND tx_extension_domain_model_table.t3ver_state <= 0
  AND tx_extension_domain_model_table.pid <> -1
  AND tx_extension_domain_model_table.hidden = 0
  AND tx_extension_domain_model_table.starttime <= 1459780380
  AND (tx_extension_domain_model_table.endtime = 0 OR     tx_extension_domain_model_table.endtime > 1459780380)
ORDER BY tx_extension_domain_model_table.sorting ASC
这就解释了我的问题。TYPO3本地化后,在sys\u language\u uid=1中没有查找new=1。。。但是为什么呢


问题:这是一个bug还是一个特性

这是extbase中的一个bug,有关更多信息,请参见此处:

    AND (
        tx_extension_domain_model_table.sys_language_uid = -1
    OR (
      tx_extension_domain_model_table.sys_language_uid = 1
      AND tx_extension_domain_model_table.l10n_parent = 0
    )
    OR (
      tx_extension_domain_model_table.sys_language_uid = 0
      AND tx_extension_domain_model_table.uid IN (
        SELECT tx_extension_domain_model_table.l10n_parent
        FROM tx_extension_domain_model_table
        WHERE tx_extension_domain_model_table.l10n_parent > 0
          AND tx_extension_domain_model_table.sys_language_uid = 1
          AND tx_extension_domain_model_table.deleted = 0
      )
    )
  )