Mam hipotetyczne rozszerzenie Zoo
, w którym mam model Animal
z polem photo
i wtyczką FrontEnd (FE) z typowymi działaniami CRUD. Pole photo
jest typowe dla FAL FileReference
i działa idealnie w backend (BE) ze wspólną konfiguracją TCA IRRE.TYPO3 6.2 - jak utworzyć FileReference w interfejsie użytkownika (FE)?
jestem zdolny do pomyślnego przesłania pliku do pamięci, to jest widoczne w module FileList, i można go używać w BE podczas mojego edycji Zwierząt, w każdym razie nie mogę tworzyć FileReference
w moim plugin FE.
Moje obecne podejście wygląda następująco:
/**
* @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');
}
każdym razie próbować utworzyć odwołanie od tej linii rzuca wyjątek:
$animal->addPhoto($fileObject);
Jak mogę rozwiązać ten problem?
Sprawdzone: podejście DataHandler
(link) również nie działa, ponieważ jest niedostępne dla użytkowników FE.
TL; DR
Jak dodać FileReference
do Animal
modelu z istniejących (nowo utworzony) rekord FAL?
Czy sprawdzić 7.6.x http://insight.helhum.io/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-6-2 - go jest innym podejściem niż twój kod w 'uploadAction', ponieważ używa typowego konwertera typów, aby przekonwertować przesłany plik (lub pliki) na obiekt, który jest bezpośrednio używany podczas tworzenia twojego modelu' Zwierzęcia'. Działa doskonale zarówno w Wf i BE. – derhansen
@derhansen thx, to pierwsza rzecz, którą widzisz podczas wyszukiwania, TBH, Miałem nadzieję, że jest prostsze rozwiązanie dla takiej ... podstawowej rzeczy, zresztą, jak widzę, muszę głębiej zagłębić się w poc pocisku Helmuta. – biesior