如何解决扩展中的文件导入
我过去常常通过 JSON 从另一个应用程序将文件导入 TYPO3。导入的文件保存在特定的存储中。相关记录在 sys_file 中创建。到目前为止,一切看起来都很好。 现在我想将导入的文件添加到某个表中。为此,我根据 NewsImportService.PHP 使用了新闻扩展 V8.5.2 的方法。有一个函数 hydrateNewsRecord() 可以建立媒体(文件)关系。因此我使用以下代码:
$media = $objectManager->get(\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::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 {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = Zhaw\ZhawContinuingEducation\Domain\Model\FileReference
}
persistence {
storagePid =
classes {
Zhaw\ZhawContinuingEducation\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
}
}
}
}
}
表 tx_zhawcontinuingeducation_domain_model_filereference 不是必须的,因为它已经存在于核心中。有人知道我错过了什么吗?
解决方法
从 TYPO3 10.0 开始,再也不可能像 TypoScript 那样映射模型类了。您需要向扩展程序添加一个 EXT:extension/Configuration/Extbase/Persistence/Classes.php
文件,其中包含以下内容:
<?php
declare(strict_types = 1);
return [
\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::class => [
'tableName' => 'sys_file_reference','properties' => [
'originalFileIdentifier' => [
'fieldName' => 'uid_local'
],],];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。