2016-04-04 6 views
4

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を探していませんが、ローカライズされていますが、なぜですか?

質問:これはバグですか、機能ですか?

答えて

関連する問題