TYPO3 6.2: ¿cómo crear FileReference en frontend (FE)?
Tengo la hipotéticaZoo
extensión en la que heAnimal
modelo conphoto
campo y plugin FrontEnd (FE) con acciones CRUD típicas.photo
campo es típico de FALFileReference
y funciona perfectamente en backend (BE) con la configuración común TCA IRRE.
Puedo cargar correctamente el archivo al almacenamiento, es visible en elLista de archivos módulo, y puedo usarlo en BE durante mi edición de Animal, de todos modos no puedo crearFileReference
dentro de mi plugin FE.
Mi enfoque actual se ve así:
/**
* @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');
}
de todos modos, intentar crear una referencia por esta línea arroja una excepción:
$animal->addPhoto($fileObject);
¿Cómo puedo resolver esto?
Comprobado:DataHandler
acercarse a, aproximarse (enlazar) tampoco funcionará, ya que no está disponible para usuarios de FE.
TL; DR
Cómo agregarFileReference
aAnimal
modelo del registro FAL existente (recién creado)?