TYPO3 更新模型的缓存行为
TYPO3 cache behaviour with updated models
我在 Typo3 6.2 LTS 中有这种奇怪的行为。
在我的扩展中,我有一个带有 FileReference 属性 的模型。这个 属性 有一个 vaule != 0
。 sys_file_reference
table.
中确实存在这个值
不是奇怪的魔法发生了。如果我尝试访问此文件,我只会得到一个 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 记录。
我在 Typo3 6.2 LTS 中有这种奇怪的行为。
在我的扩展中,我有一个带有 FileReference 属性 的模型。这个 属性 有一个 vaule != 0
。 sys_file_reference
table.
不是奇怪的魔法发生了。如果我尝试访问此文件,我只会得到一个 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 记录。