Tôi có phần mở rộng giả định Zoo
trong đó tôi đã mô hình Animal
với các trường photo
và FrontEnd (FE) với các hành động CRUD điển hình. photo
trường là điển hình của FAL FileReference
và nó hoạt động hoàn hảo trong phụ trợ (BE) với cấu hình TCA IRRE chung.TYPO3 6.2 - cách tạo FileReference trong giao diện người dùng (FE)?
Tôi có thể tải lên thành công file để lưu trữ, nó hiển thị trong các mô-đunfilelist, và tôi có thể sử dụng nó trong BE trong chỉnh sửa động vật của tôi, dù sao tôi không thể tạo FileReference
trong Plugin FE của tôi.
cách tiếp cận hiện tại của tôi trông như thế này:
/**
* @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');
}
nào cố gắng để tạo ra tài liệu tham khảo của dòng này ném ngoại lệ:
$animal->addPhoto($fileObject);
Làm thế nào tôi có thể giải quyết này?
Đã kiểm tra: DataHandler
phương pháp tiếp cận (link) cũng sẽ không hoạt động vì không khả dụng đối với người dùng FE.
TL; DR
Làm thế nào để thêm FileReference
-Animal
mô hình từ hiện (vừa tạo) kỷ lục FAL?
Bạn đã kiểm tra http://insight.helhum.io/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-6-2 - it là một cách tiếp cận khác với mã của bạn trong 'uploadAction' vì nó sử dụng một trình biến đổi kiểu chung để chuyển đổi tệp (hoặc tệp) đã tải lên của bạn thành một đối tượng được sử dụng trực tiếp khi tạo mô hình' Động vật' của bạn. Hoạt động hoàn hảo cả trong FE và BE. – derhansen
@derhansen thx, đó là điều đầu tiên bạn nhìn thấy khi googling, TBH, tôi hy vọng có giải pháp đơn giản cho một điều cơ bản ... như vậy, dù sao tôi có thể thấy tôi cần phải đào sâu hơn vào trong Helmut's poc. – biesior