我之所以感到困惑,是因为我发现TYPO3中有两个不同的FileReference类。其中一个来自Core,另一个来自Extbase。
来自核心的那个有类似delete()的函数,但是这个delete还没有实现。我找不到任何删除FileReference的函数。
如果我在存储库的扩展中使用update,镜像将被添加,而不是被新镜像替换。
我想了解如何以简单的方式在ext_file_reference中添加、删除和获取文件。
有谁有解决方案或提示吗?
发布于 2018-02-20 07:29:17
从你的问题中看不出你想要做什么。
如果要替换文件,可以在File对象本身上执行,而不是在引用上执行。但请注意,这将替换所有引用的文件。在文件的ResourceStorage对象上有一个replaceFile()函数。
如果要替换特性中的文件,则必须拆离一个文件并附着另一个文件。每个包含FileReferences的属性都是一个ObjectStorage,因此附带了attach()和detach()方法来实现这一点。
发布于 2018-02-20 12:05:20
让我试着更详细地解释一下。
我尝试用一个页面上的一个图像替换另一个图像,但根本不修改图像。另外,新镜像已经存储在fileadmin下。我需要一个新的文件引用,并替换sys_file_reference中的旧文件引用。因此attach和detach是很好的解决方案,但不能与extbase文件引用一起使用。为此,我需要一个\TYPO3\CMS\Extbase\Persistence\ObjectStorage对象。我尝试了"\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\HGA\Hgarecipes\Domain\Model\FileReference>“,但它创建了一个错误"Cannot cast object of type "TYPO3\CMS\Extbase\Persistence\ObjectStorage”to string“。因此,最后,我正在寻找一个解决方案,以添加和删除图像从sys_file_reference的extbase。我发现很多人都在寻找一些东西,但没有解决方案。如果我使用objectstorage,我就不能再访问文件引用的originalResource了。
换句话说,在sys_file_reference中使用给定的文件路径创建一个条目,并在不再需要时删除该条目。
另一方面,我想了解为什么extbase需要自己的filereference。
https://stackoverflow.com/questions/48855419
复制相似问题