这基本上与此问题相同,但现在对于TYPO3 8:get TYPO3 Extbase Repository items in other languages

https://forge.typo3.org/issues/45873中提到的解决方法对我来说在v8中不起作用 . 它始终返回默认语言中的项目 .

有没有人有适当的例子?

public function findTranslation($obj, $languageUid){
        $query = $this->createQuery();

        $query->matching(
            $query->logicalAnd(
                $query->equals("l10n_parent", $course->getUid()),
                $query->equals("sys_language_uid",$languageUid)
            )
        );

    $result = $query->execute();
    return $result;
}

what i tried

暂时覆盖存储库中的TCA languageField

public function findTranslation($obj, $languageUid){
        $query = $this->createQuery();

        $languageField = $GLOBALS['TCA']['tx_extensionname_domain_model_table']['ctrl']['languageField'];
        unset($GLOBALS['TCA']['tx_extensionname_domain_model_table']['ctrl']['languageField']);

        $query->matching(
            $query->logicalAnd(
                $query->equals("l10n_parent", $course->getUid()),
                $query->equals("sys_language_uid",$languageUid)
            )
        );


        $GLOBALS['TCA']['tx_extensionname_domain_model_table']['ctrl']['languageField'] = $languageField;

        $result = $query->execute();
        return $result;
}

这个工作单在https://forge.typo3.org/issues/45873找到

$GLOBALS['TCA']['tx_extensionname_domain_model_table']['ctrl']['transOrigPointerTable'] = '';

这个hack在forge.typo3.org/issues/45873#note-27(CustomDataMapper)中找到