簡體   English   中英

Typo3 7.2將文件引用添加到擴展模型

[英]Typo3 7.2 add file reference to extension model

我正在使用Typo 7.2,正在尋找以下問題的答案:

如何以編程方式將生成的文件作為FileReference添加到擴展模型?

首先是有關我的成就/嘗試的一些信息。

完成命令控制器在文件夾上運行,查找特定圖像,然后通過GraphicFunctions創建模糊文件。 生成的文件作為獨立的簡單文件添加到存儲,並顯示在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.

更新將來自Frans的數據集成到ext_typoscript_setup.txt中后,可以保存模型,創建sys_file_reference條目,並且在后端運行良好。 但是,有幾點可以滿足所有需求:

  1. sys_file_reference表不包含table_local的值,而后端用戶生成的所有條目都將sys_file作為值。
  2. 持有一些二進制大對象的l10n_diffsource也是如此。 通過后端手動保存記錄后,該條目將插入sys_file_reference表中。
  3. 必須通過setPid($ model-> getPid())設置file_reference的pid,可以嗎?
  4. cruser_id始終設置為零。 這是正確的方法嗎?
  5. 當嘗試通過文件管理器刪除文件(已將其添加到具有后端功能的模型中)時,我收到一條警告,指出存在對該文件的引用。 這不適用於以編程方式添加的fileReference。 此外,文件下方列出的引用(當在后端文件管理器中單擊生成的文件的“信息”時)也不會列出。 當我手動在sys_file_reference表中輸入“ sys_file”值時,它們就會列出。
  6. 由於Helmut Hummels的示例包含其他數據,我想知道我是否會錯過一些東西。
  7. 該文件引用用於對象存儲內部,但由於addImage函數僅調用objectStorage-> attach,我認為這應該可以,並且不需要任何其他objectStorage操作。 正確?

您必須告訴extbase持久層使用正確的表。 例如參見以下示例https://github.com/helhum/upload_example/blob/master/ext_typoscript_setup.txt

gr。 弗蘭斯

嘗試回答1)參見https://github.com/helhum/upload_example/blob/master/Configuration/TCA/tx_uploadexample_domain_model_example.php#L128您可能應該檢查posterWebBlur字段的TCA定義。 getFileFieldTCAConfig()TT的第二個參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM