我正在使用Typo 7.2,我正在寻找以下问题的答案:
如何将生成的文件作为filerreference以编程方式添加到扩展模型?
首先是一些关于我的成就/尝试的信息。
DONE命令控制器在文件夹上运行,查找特定图像并通过GraphicFunctions创建模糊文件。生成的文件作为一个独立的简单文件添加到存储中,并出现在sys_file表中。
$fileObject = $posterStorage->addFile(
$convertResult[3],
$posterStorage->getFolder($blurFolderName),
$newFileName);
部分完成。现在我需要将生成的文件作为文件引用添加到模型中。问题是,我能够做到这一点,但只能通过破解核心——这是不可接受的——而且无法以正确的方式做到这一点。模型显示:
public function addPosterWebBlur(
TYPO3CMSExtbaseDomainModelFileReference $posterWebBlur
) {
$this->posterWebBlur->attach($posterWebBlur);
}
所以我成功地扩展了filerreference类:
class FileReference extends TYPO3CMSExtbaseDomainModelFileReference {
public function setFile(TYPO3CMSCoreResourceFile $falFile) {
$this->$uidLocal = (int)$falFile->getUid();
}
}
引用没有建立,我只是在后端得到以下错误:
Table 'db_name.tx_ext_name_domain_model_filereference' doesn't exist.
在ext_typoscript_setup.txt中集成来自Frans的数据后,可以保存模型,创建一个sys_file_reference条目,并在后端很好地工作。但是有几个点是开放的,可以满足所有的需求:
- sys_file_reference表不包含table_local的值,而后端用户生成的所有表项都将sys_file作为值。
- 同样适用于l10n_diffsource,它保存一些二进制大对象。在通过后端手动保存记录后,该条目被插入到sys_file_reference表中。
- file_reference的pid必须通过setPid($model->getPid())来设置,这样可以吗?
- cruser_id总是被设置为零。这条路对吗?
- 当试图删除一个文件(这是添加到一个模型与后端可能性)通过文件管理器,我得到一个警告,引用这个文件存在。这不适用于以编程方式添加的filerreference。此外,文件下列出的引用(在后端文件管理器中单击生成文件的"Info"时)也不会列出。当我在sys_file_reference表中手动输入"sys_file"值时,它们会被列出。
- 作为Helmut Hummels的例子持有额外的数据,我想知道,如果我只是错过了一些东西。
- 文件引用在对象存储中使用,但由于addmage函数只调用objectStorage->attach,我认为这应该是可以的,没有额外的objectStorage操作是必要的。正确吗?
必须告诉extbase持久层使用正确的表。参见以下示例https://github.com/helhum/upload_example/blob/master/ext_typoscript_setup.txt
gr。Frans
尝试回答1)看到https://github.com/helhum/upload_example/blob/master/Configuration/TCA/tx_uploadexample_domain_model_example.php#L128你应该检查一下你的posterWebBlur字段的TCA定义。getFileFieldTCAConfig()的第二个参数TT