Ho la ipotetica Zoo
estensione in cui ho Animal
modello con photo
campo e FrontEnd (FE) plugin con azioni tipiche CRUD. Il campo photo
è un tipico FAL FileReference
e funziona perfettamente nel backend (BE) con la configurazione TCA IRRE comune.TYPO3 6.2 - come creare FileReference in frontend (FE)?
Sono in grado di caricare il file con successo alla memoria, è visibile nel modulo Filelist , e posso usarlo in essere durante il mio editing degli animali, in ogni caso non posso creare FileReference
nel mio plug-FE.
mio approccio attuale si presenta così:
/**
* @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');
}
comunque tentare di creare di riferimento da questa linea genera un'eccezione:
$animal->addPhoto($fileObject);
Come posso risolvere questo?
Controllato: l'approccio DataHandler
(link) non funziona anche perché non è disponibile per gli utenti di FE.
TL; DR
Come aggiungere FileReference
-Animal
modello da esistente (appena creato) record di FAL?
Hai controllato http://insight.helhum.io/post/85015526410/file-upload-using-extbase-and-fal-in-typo3-6-2 - è è un approccio diverso rispetto al codice in uploadAction poiché utilizza un typeconverter generico per convertire il file (oi file) caricato in un oggetto che viene direttamente utilizzato durante la creazione del modello 'Animal'. Funziona perfettamente sia in FE che in BE. – derhansen
@derhansen thx, questa è la prima cosa che vedi quando usi google, TBH, speravo che ci fosse una soluzione più semplice per una cosa così ... di base, comunque come posso vedere ho bisogno di scavare più a fondo nel poc di Helmut. – biesior