扩展中的文件导入

如何解决扩展中的文件导入

我过去常常通过 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'
            ],],];

您可以在此处找到更多相关信息:https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/10.0/Breaking-87623-ReplaceConfigpersistenceclassesTyposcriptConfiguration.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?