TYPO3 CMS 7.6用の独自のエクステンション拡張を作成します。拡張機能はさまざまな言語で実行する必要があります。リポジトリの照合は、ローカライズされていないレコードでのみ動作することがわかりました。Typo3 7.6 extbaseリポジトリのマッチングはローカライズされていないレコードにのみ適用されます
マイリポジトリ機能は、以下のようになります。
public function findNew() {
$query = $this->createQuery();
$query->getQuerySettings()->setRespectSysLanguage(true);
$query->matching($query->equals('new', 1));
return $query->execute();
}
この関数は言う:私は、チェックボックスは、「新」が起動していないデフォルトのレコードを持っている :新しい= 1
例ですべてのレコードを表示します。今度は、このレコードのローカライズ版を作成し、「新規」チェックボックスを有効に設定します。
findNew()関数をデフォルト言語で実行すると、レコードは表示されません。別の言語で関数を実行すると、 "New"フラグが設定されているにもかかわらず、レコードは表示されません!
他の言葉では、マッチングはデフォルト/親レコードにのみ影響します。
私は、次の設定-の設定を使用しています:
config {
sys_language_mode = strict
sys_language_overlay = hideNonTranslated
}
[編集:]:
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
...と重要な部分:
はここで完全に生成されたSQLクエリです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で新しい= 1を探していませんが、ローカライズされていますが、なぜですか?
質問:これはバグですか、機能ですか?