我有一个假设的Zoo
扩展,其中我使用具有典型 CRUD 操作Animal
的字段和前端 (FE) 插件进行建模。字段是典型的 FAL ,它在具有通用 TCA IRRE 配置的后端 (BE) 中完美运行。photo
photo
FileReference
我能够成功地将文件上传到存储中,它在Filelist模块中可见,并且我可以在动物编辑期间在 BE 中使用它,无论如何我无法FileReference
在我的 FE 插件中创建。
我目前的方法如下所示:
/**
* @param \Zoo\Zoo\Domain\Model\Animal $animal
*/
public function updateAction(\Zoo\Zoo\Domain\Model\Animal $animal) {
// It reads proper uploaded `photo` from form's $_FILES
$file = $this->getFromFILES('tx_zoo_animal', 'photo');
if ($file && is_array($file) && $file['error'] == 0) {
/** @type $storageRepository \TYPO3\CMS\Core\Resource\StorageRepository */
$storageRepository = GeneralUtility::makeInstance('\TYPO3\CMS\Core\Resource\StorageRepository');
$storage = $storageRepository->findByUid(5); // TODO: make target storage configurable
// This adds uploaded file to the storage perfectly
$fileObject = $storage->addFile($file['tmp_name'], $storage->getRootLevelFolder(), $file['name']);
// Here I stuck... below line doesn't work (throws Exception no. 1 :/)
// It's 'cause $fileObject is type of FileInterface and FileReference is required
$animal->addPhoto($fileObject);
}
$this->animalRepository->update($animal);
$this->redirect('list');
}
无论如何尝试通过此行创建引用会引发异常:
$animal->addPhoto($fileObject);
我该如何解决这个问题?
检查:DataHandler
方法(链接)也不起作用,因为它对 FE 用户不可用。
TL;博士
如何从现有(刚刚创建的)FAL 记录添加FileReference
到模型?Animal