#typo3 #typo3-10.x #file-import
Вопрос:
Я использую для импорта файлов из другого приложения через JSON в TYPO3. Импортированные файлы сохраняются в определенном хранилище. Связанные записи создаются в файле sys_file. Пока все выглядит хорошо. Теперь я хотел бы добавить импортированные файлы в определенную таблицу. Для этого я использую подход расширения новостей V8.5.2 в соответствии с NewsImportService.php. Существует функция hydrateNewsRecord (), которая устанавливает связь между носителями (файлами). Для этого я использую следующий код:
$media = $objectManager->get(ZhawZhawContinuingEducationDomainModelFileReference::class);
$media->setFileUid($file->getUid());
\ add new file to field
$newCourse->addContactImage1($media);
...
\ add to table course
$courseRepo->add($newCourse);
...
$persistenceManager->persistAll();
Во время теста я всегда получаю ошибку (из-за менеджера сохраняемости): Таблица «typo3_www.tx_zhawcontinuingeducation_domain_model_filereference» не существует
Я также включил в раздел домен/модель FileReference.php и добавлено в setup.typoscript:
objects {
TYPO3CMSExtbaseDomainModelFileReference.className = ZhawZhawContinuingEducationDomainModelFileReference
}
persistence {
storagePid =
classes {
ZhawZhawContinuingEducationDomainModelFileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
}
}
}
}
}
Таблица tx_zhawcontinuingeducation_domain_model_filereference не нужна, поскольку она уже существует в ядре. Кто-нибудь знает, чего мне не хватает?
Комментарии:
1. Какую версию TYPO3 вы используете?
2. Ах да, я забыл упомянуть. Мы используем TYPO3 V10.4.12
Ответ №1:
Сопоставление классов моделей, подобных этому, в TypoScript, больше невозможно с версии TYPO3 10.0. Вам нужно будет добавить EXT:extension/Configuration/Extbase/Persistence/Classes.php
файл в расширение со следующим содержимым:
<?php
declare(strict_types = 1);
return [
ZhawZhawContinuingEducationDomainModelFileReference::class => [
'tableName' => 'sys_file_reference',
'properties' => [
'originalFileIdentifier' => [
'fieldName' => 'uid_local'
],
],
],
];
Подробнее об этом вы можете узнать здесь: https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/10.0/Breaking-87623-ReplaceConfigpersistenceclassesTyposcriptConfiguration.html
Комментарии:
1. Большое спасибо, ты сделал мой день лучше. Это помогло мне решить мою проблему. После того, как я изменил свой «старый» код, он работает как заклинание.