簡體   English   中英

Typo3 7.6 extbase存儲庫匹配僅影響非本地化記錄

[英]Typo3 7.6 extbase repository matching only affect non-localized records

我想為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(),則不會顯示該記錄。 如果我用另一種語言執行該功能,雖然設置了“新”標志,但記錄也不會顯示!

換句話說:匹配僅影響默認/父記錄。

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

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

......以及重要的部分:

    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
      )
    )
  )

這解釋了我的問題。 當本地化時,TYPO3不會在sys_language_uid = 1中尋找new = 1,但為什么呢?

問題:這是一個錯誤還是一個功能?

這是extbase中的一個錯誤,請點擊此處獲取更多信息: https ://forge.typo3.org/issues/57272

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM