Localization Typo3 7.6 extbase存储库匹配仅影响非本地化记录
我想为TYPO3 CMS 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
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
)
)
)