TYPO3 更新模型的缓存行为

TYPO3 cache behaviour with updated models

我在 Typo3 6.2 LTS 中有这种奇怪的行为。 在我的扩展中,我有一个带有 FileReference 属性 的模型。这个 属性 有一个 vaule != 0sys_file_referencetable.

中确实存在这个值

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

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

我感谢所有帮助!

Greetz, Paddaels

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

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

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

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

要将您的模型映射到 sys_file_reference table,您必须添加一些拼写错误。

为此,在您的扩展文件夹中创建一个 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 记录。