Typo3 7.2 添加对扩展模型的文件引用
Typo3 7.2 add file reference to extension model
我正在使用 Typo 7.2,正在寻找以下问题的答案:
如何以编程方式将生成的文件作为 FileReference 添加到扩展模型?
首先是一些关于我的 achievements/tries 的信息。
完成 命令控制器运行文件夹,查找特定图像并通过 GraphicFunctions 创建模糊文件。生成的文件作为独立的简单文件添加到存储中,并出现在 sys_file table.
中
$fileObject = $posterStorage->addFile(
$convertResult[3],
$posterStorage->getFolder($blurFolderName),
$newFileName);
部分完成。现在我需要将生成的文件添加为我的模型的文件引用。问题是,我能够做到这一点,但只能通过破解核心 - 而不是 acceptable - 并且无法以正确的方式做到这一点。模型说:
public function addPosterWebBlur(
\TYPO3\CMS\Extbase\Domain\Model\FileReference $posterWebBlur
) {
$this->posterWebBlur->attach($posterWebBlur);
}
所以我成功地扩展了 FileReference class:
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 中整合来自 Frans 的数据后,可以保存模型,创建一个 sys_file_reference 条目并在后端很好地运行。但有几点可以满足所有需求:
- sys_file_reference table 不包含 table_local 的值,而后端用户生成的所有条目都将 sys_file 作为值。
- 这同样适用于 l10n_diffsource,它包含一些二进制大对象。通过后端手动保存记录后,此条目将插入 sys_file_reference table。
- file_reference 的 pid 必须通过 setPid($model->getPid()) 设置,可以吗?
- cruser_id 始终设置为零。这是正确的方法吗?
- 当尝试通过文件管理器删除文件(已添加到具有后端可能性的模型)时,我收到一条警告,指出存在对该文件的引用。这不适用于以编程方式添加的 fileReference。此外,文件下列出的引用(当在后端文件管理器中单击 "Info" 以获取生成的文件时)也不会列出。当我在 sys_file_reference table 中手动输入 "sys_file" 值时,它们会被列出。
- 由于 Helmut Hummels 示例包含额外的数据,我想知道我是否遗漏了一些东西。
- 文件引用在对象存储中使用,但由于 addImage 函数只调用 objectStorage->attach 我认为这应该没问题,不需要额外的 objectStorage 操作。正确吗?
您必须告诉 extbase 持久层使用正确的 table。例如,参见此示例 https://github.com/helhum/upload_example/blob/master/ext_typoscript_setup.txt
克。弗兰斯
正在尝试回答 1)
看
https://github.com/helhum/upload_example/blob/master/Configuration/TCA/tx_uploadexample_domain_model_example.php#L128
您可能应该检查 posterWebBlur 字段的 TCA 定义。 getFileFieldTCAConfig() 的第二个参数
TT
我正在使用 Typo 7.2,正在寻找以下问题的答案:
如何以编程方式将生成的文件作为 FileReference 添加到扩展模型?
首先是一些关于我的 achievements/tries 的信息。
完成 命令控制器运行文件夹,查找特定图像并通过 GraphicFunctions 创建模糊文件。生成的文件作为独立的简单文件添加到存储中,并出现在 sys_file table.
中$fileObject = $posterStorage->addFile(
$convertResult[3],
$posterStorage->getFolder($blurFolderName),
$newFileName);
部分完成。现在我需要将生成的文件添加为我的模型的文件引用。问题是,我能够做到这一点,但只能通过破解核心 - 而不是 acceptable - 并且无法以正确的方式做到这一点。模型说:
public function addPosterWebBlur(
\TYPO3\CMS\Extbase\Domain\Model\FileReference $posterWebBlur
) {
$this->posterWebBlur->attach($posterWebBlur);
}
所以我成功地扩展了 FileReference class:
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 中整合来自 Frans 的数据后,可以保存模型,创建一个 sys_file_reference 条目并在后端很好地运行。但有几点可以满足所有需求:
- sys_file_reference table 不包含 table_local 的值,而后端用户生成的所有条目都将 sys_file 作为值。
- 这同样适用于 l10n_diffsource,它包含一些二进制大对象。通过后端手动保存记录后,此条目将插入 sys_file_reference table。
- file_reference 的 pid 必须通过 setPid($model->getPid()) 设置,可以吗?
- cruser_id 始终设置为零。这是正确的方法吗?
- 当尝试通过文件管理器删除文件(已添加到具有后端可能性的模型)时,我收到一条警告,指出存在对该文件的引用。这不适用于以编程方式添加的 fileReference。此外,文件下列出的引用(当在后端文件管理器中单击 "Info" 以获取生成的文件时)也不会列出。当我在 sys_file_reference table 中手动输入 "sys_file" 值时,它们会被列出。
- 由于 Helmut Hummels 示例包含额外的数据,我想知道我是否遗漏了一些东西。
- 文件引用在对象存储中使用,但由于 addImage 函数只调用 objectStorage->attach 我认为这应该没问题,不需要额外的 objectStorage 操作。正确吗?
您必须告诉 extbase 持久层使用正确的 table。例如,参见此示例 https://github.com/helhum/upload_example/blob/master/ext_typoscript_setup.txt
克。弗兰斯
正在尝试回答 1) 看 https://github.com/helhum/upload_example/blob/master/Configuration/TCA/tx_uploadexample_domain_model_example.php#L128 您可能应该检查 posterWebBlur 字段的 TCA 定义。 getFileFieldTCAConfig() 的第二个参数 TT