TYPO3缓存行为与更新的模型

时间:2017-07-06 12:44:53

标签: caching typo3 filereference fal

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

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

我们已经清除了缓存(服务器和浏览器),但没有。它仍然是null

我感谢各种帮助!

Greetz,Paddaels

1 个答案:

答案 0 :(得分:2)

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

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

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

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

要将模型映射到sys_file_reference表,您必须添加一些typoscript。

为此,在extensions文件夹中创建一个ext_typoscript_setup.txt并插入以下代码(adjust namespace和modelname)

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

清除安装工具中的缓存(当然是进行数据库迁移)后,它应该可以正常工作。

<强>说明:

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

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