Typo3 7.2添加对扩展模型

时间:2015-07-20 14:13:08

标签: typo3 typo3-6.2.x filereference

我正在使用Typo 7.2,我正在寻找以下问题的答案:

如何以编程方式将生成的文件作为FileReference添加到扩展模型中?

首先关于我的成就/尝试的一些信息。

完成命令控制器在文件夹上运行,查找特定图像并通过GraphicFunction创建模糊文件。生成的文件作为独立的简单文件添加到存储中,并显示在sys_file表中。

$fileObject = $posterStorage->addFile(
  $convertResult[3],
  $posterStorage->getFolder($blurFolderName),
  $newFileName);

部分完成。现在我需要将生成的文件添加为模型的文件引用。问题是,我能够做到这一点,但只能通过破解核心 - 不可接受 - 并且无法以正确的方式做到这一点。模特说:

public function addPosterWebBlur(
\TYPO3\CMS\Extbase\Domain\Model\FileReference $posterWebBlur
) {
  $this->posterWebBlur->attach($posterWebBlur);
}

所以我成功扩展了FileReference类:

class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {
  public function setFile(\TYPO3\CMS\Core\Resource\File $falFile) {
    $this->$uidLocal = (int)$falFile->getUid();
  }
}

引用没有建立,我只是在后端得到以下错误:

Table 'db_name.tx_ext_name_domain_model_filereference' doesn't exist.

更新 在将文件中的数据集成到ext_typoscript_setup.txt之后,可以保存模型,创建sys_file_reference条目并在后端中很好地运行。但是有几点可以满足所有需求:

  1. sys_file_reference表不包含table_local的值,而后端用户生成的所有条目都将sys_file保存为值。
  2. 这同样适用于拥有一些二进制大对象的l10n_diffsource。通过后端手动保存记录后,此条目将插入到sys_file_reference表中。
  3. file_reference的pid必须通过setPid($ model-> getPid())设置,可以吗?
  4. cruser_id始终设置为零。这是正确的方法吗?
  5. 当尝试通过文件管理器删除文件(已添加到具有后端可能性的模型中)时,我收到一条警告,表示存在对该文件的引用。这不适用于以编程方式添加的fileReference。此外,文件下列出的引用(在后端文件管理器中单击“信息”时生成的文件)也未列出。当我手动输入sys_file_reference表中的“sys_file”值时,它们会被列出。
  6. 正如Helmut Hummels的例子中包含更多数据,我想知道,如果我错过了一些东西。
  7. 文件引用在对象存储中使用,但由于addImage函数只调用objectStorage-> attach,我认为这应该没问题,并且不需要额外的objectStorage操作。正确的吗?

2 个答案:

答案 0 :(得分:1)

您必须告诉extbase持久层使用正确的表。例如,请参阅此示例https://github.com/helhum/upload_example/blob/master/ext_typoscript_setup.txt

克。反

答案 1 :(得分:0)

试着回答1) 看到 http://pct107/ReportServer_SQL2014 您应该检查posterWebBlur字段的TCA定义。 getFileFieldTCAConfig()的第二个参数 TT