0

Typo3 6.2 LTS 我有这种奇怪的行为。在我的扩展中,我有一个带有 FileReference 属性的模型。这个属性有一个vaule != 0。该值确实存在于sys_file_reference表中。

不会发生奇怪的魔法。如果我尝试访问这个文件,我只会得到一个null值而不是 FileReference-/FileObject。

我们已经清除了我们的缓存(服务器和浏览器),但什么也没有。还是null

我感谢各种帮助!

Greetz,帕达尔斯

4

1 回答 1

2

我记得总是很难从域模型到 FileReference 建立 1:1 的关系。我建议您使用现有模式并为此使用 ObjectStorage。

您可以从 tt_content 表(例如字段图像)的现有 tca 中复制必要的 TCA。属性注释应如下所示:

/**
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Extension\Domain\Model\FileReference>
 * @lazy
 * @cascade remove
 */
 protected $propName;

当然,您必须在自己的命名空间中创建 FileReference 模型。但是您可以扩展 Extbase 基本模型,因此您不必编写任何方法。

要将您的模型映射到 sys_file_reference 表,您必须添加一些打字稿。

为此,在您的扩展文件夹中创建一个 ext_typoscript_setup.txt 并插入以下代码(调整命名空间和模型名称)

config.tx_extbase.persistence.classes {
    Vendor\Extension\Domain\Model\FileReference.mapping {
        tableName = sys_file_reference
    }
}

在安装工具中清除缓存(当然还有进行数据库迁移)之后,它应该可以工作了。

说明:

@lazy:只有在访问该属性时,Typo3 才不会一次获取所有引用。

@cascade remove:一旦模型被删除,Extbase 将删除与您的域模型相关的所有 sys_file_reference 记录。

于 2017-07-06T16:16:18.830 回答