Есть ли способ создать переводы доменных объектов поверх extbase в TYPO3 9?

Я импортирую некоторые продукты с JSON в свое расширение TYPO3.

У меня проблемы с созданием перевода через мой ImportService, так как я обновился с TYPO3 8 до TYPO3 9. Кажется, что l10n_parent в базе данных не может быть установлен, хотя _localizedUid и _versionedUid устанавливаются.

/**
 * @param DomainObjectInterface $object
 * @param $targetLanguageUid
 * @return DomainObjectInterface|null
 */
public function translate($object, $targetLanguageUid)
{
    /** @var AbstractDomainObject $objectCopy */
    $objectCopy = new $this->objectType;
    $properties = ObjectAccess::getGettableProperties($object);
    foreach ($properties as $propertyName => $propertyValue) {
        ObjectAccess::setProperty($objectCopy, $propertyName, $propertyValue);
    }
    $objectCopy->_setProperty('_localizedUid', $object->getUid());
    $objectCopy->_setProperty('_languageUid', $targetLanguageUid);
    $objectCopy->_setProperty('_versionedUid', $object->getUid());
    return $objectCopy;
}

Ожидаемый результат: l10n_parent в базе данных, например. 403 (uid исходного объекта)
Фактический результат: l10n_parent в базе данных равен 0


person Anton Fries    schedule 03.04.2019    source источник


Ответы (1)


При работе с внутренними структурами данных TYPO3 рекомендуется использовать DataHandler для этого. В вашем случае вам просто нужно предоставить массив конфигурации и правильно установить поле localize. Вы можете использовать это в своих собственных сценариях с внутренней областью действия, примеры приведены в документация. В вашем сценарии импорта вам придется сначала создать записи на языке по умолчанию, а затем создать для него каждый перевод.

person Michael    schedule 08.04.2019