Typo3 6.2 LTS 我有这种奇怪的行为。在我的扩展中,我有一个带有 FileReference 属性的模型。这个属性有一个vaule != 0
。该值确实存在于sys_file_reference
表中。
不会发生奇怪的魔法。如果我尝试访问这个文件,我只会得到一个null
值而不是 FileReference-/FileObject。
我们已经清除了我们的缓存(服务器和浏览器),但什么也没有。还是null
。
我感谢各种帮助!
Greetz,帕达尔斯
Typo3 6.2 LTS 我有这种奇怪的行为。在我的扩展中,我有一个带有 FileReference 属性的模型。这个属性有一个vaule != 0
。该值确实存在于sys_file_reference
表中。
不会发生奇怪的魔法。如果我尝试访问这个文件,我只会得到一个null
值而不是 FileReference-/FileObject。
我们已经清除了我们的缓存(服务器和浏览器),但什么也没有。还是null
。
我感谢各种帮助!
Greetz,帕达尔斯
我记得总是很难从域模型到 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 记录。