Zum Inhalt springen

FAL - Image Import

Erstellt am 9. Juni 2015 · Noch keine Antworten

Tags: Frage

CrashOverride ·

Hallo liebe Community :-)

Ich fühle mich aktuell ziemlich doof, da ich seit mehreren Tagen an ein und dem selben Problem hänge.

Ich habe eine Extension, vereinfacht gesehen habe ich 1 Model "Image" mit verschiedenen Properties, u.a. die Property "Path", welche in der TCA ein FAL-Feld ist. Im Backend kann ich problemlos viele Dateien hinterlegen und die Datensätze abspeichern, alles funktioniert so, wie es soll.

Nun brauche ich aber eine Import-Funktion, heißt ich habe eine XML-Datei, welche ich importieren muss. In der XML-Datei steht u.a der Pfad zu einer Datei (testweise "test.jpg" im Root-Verzeichnis), diese Datei möchte ich einem entweder neuen Datensatz oder einem bestehenden zuweisen, genau da ist mein Problem!
Ich schaffe es nicht, die Datei in den Datensatz zu bugsieren, geht einfach nicht...

Grundsätzlich habe ich mich bei meinem jetzigen Versuch an die Seite http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-dateiupload-im-frontend/ gehalten. Ich habe also folgende Dateien:
- Classes
--- Controller
----- ImageController.php
--- Domain
----- Model
------- File.php
------- FileReference.php
------- Image.php
----- Repository
------- FileReferenceRepository.php
------- FileRepository.php
------- ImageRepository.php

Mein Programmcode im ImageController.php in der Standard-Action (listAction) sieht wie folgt aus:

$storageRepository = $this->objectManager->get('TYPO3\CMS\Core\Resource\StorageRepository');
$storage = $storageRepository->findByUid('1');

$newFileObject = $storage->addFile(
  'fileadmin/bla.jpg', $storage->getRootLevelFolder(), 'bla.jpg', 'overrideExistingFile'
);

$newFileObject = $storage->getFile($newFileObject->getIdentifier());
$newFile = $this->fileRepository->findByUid($newFileObject->getProperty('uid'));

$newFileReference = $this->objectManager->get('\\CO\\Faltest\\Domain\\Model\\FileReference');
$newFileReference->setFile($newFile);

$image = $this->objectManager->get('\\CO\\Faltest\\Domain\\Model\\Image');

$image->addPath($newFileReference);
$image->setTitle('test');

$imageRepository = $this->objectManager->get('\\CO\\Faltest\\Domain\\Repository\\ImageRepository');
$imageRepository->add($image);

$persistenceManager = $this->objectManager->get('\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
$persistenceManager->persistAll();

Die Datei ist vorhanden und er läuft den Code auch bis zum persistieren fehlerfrei durch, dann bekomme ich folgende Fehlermeldung:

#1: PHP Warning: mysqli::real_escape_string() expects parameter 1 to be string, object given in /var/www/html/typo3/sysext/core/Classes/Database/DatabaseConnection.php line 817 (More information)

Hatte irgendjemand ein ähnliches Problem? Seh ich gerade den Wald vor lauter Bäumen nicht? Ideen? Hilfe? Vorschläge? :-)

Vielen Dank im Voraus!