[TYPO3-german] per eigener Extension Dateien einer FileCollection hinzufügen

Oliver Baran obaran at gmail.com
Wed Aug 9 18:32:42 CEST 2017


Hallo zusammen,

ich komme hier leider nicht weiter. Ich versuche in einer eigenen Extension
eine File Collection anzulegen, um daraus später eine Galerie zu erstellen.
Ich habe es schon geschafft die File Collection per PHP Code anzulegen,
aber bei dem Versuch der Collection Dateien hinzuzufügen scheitere ich grad.

Mein Code sieht im Moment ca so aus (Den Code habe ich u.a. von
news_importicsxml von Georg Ringer adaptiert):
/**
 * @param array $importItem
 * @return null|\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum
 */
protected function initializeGalleryRecord(array $importItem)
{
    $gallery = null;

    if ($importItem['import_source'] && $importItem['import_id']) {
        $gallery =
$this->mediaAlbumRepository->findOneByImportId($importItem['import_id']);
    }

    if ($gallery === null) {
        $gallery =
$this->objectManager->get(\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum::class);
        $this->mediaAlbumRepository->add($gallery);
    }

    return $gallery;
}

/**
 * @param \MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum $gallery
 * @param array $importItem
 * @param array $importItemOverwrite
 * @return \MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum
 */
protected function hydrateMediaImportRecord(
\MiniFranske\FsMediaGallery\Domain\Model\MediaAlbum $gallery,
array $importItem, array $importItemOverwrite
)
{
    if (!empty($importItemOverwrite)) {
            $importItem = array_merge($importItem, $importItemOverwrite);
        }

        $gallery->setPid($importItem['pid']);
        $gallery->setHidden($importItem['hidden']);
        $gallery->setTitle($importItem['title']);
        $gallery->setWebdescription($importItem['title']);
        $gallery->setImportId($importItem['import_id']);

        // media relation
        if (is_array($importItem['media'])) {
            /** @var $fileCollection
\TYPO3\CMS\Core\Resource\Collection\StaticFileCollection */
            $fileCollection =
$gallery->getFileCollectionRepository()->findByUid($gallery->getUid());
            $fileCollection->loadContents();

            foreach ($importItem['media'] as $mediaItem) {

                if (!isset($mediaItem['image']) ||
empty($mediaItem['image'])) {
                    continue;
                }
                // get fileobject by given identifier (file UID, combined
identifier or path/filename)
                $file =
$this->getResourceFactory()->retrieveFileOrFolderObject($mediaItem['image']);

                $fileCollection->add($file);
            }
            $fileCollection->persist();
        }

        return $gallery;
    }

/**
 * Import
 *
 * @param array $importData
 * @param array $importItemOverwrite
 * @param array $settings
 */
public function import(array $importData, array $importItemOverwrite = [],
                       $settings = [])
{
    $this->settings = $settings;

    foreach ($importData as $importItem) {
        $arguments  = ['importItem' => $importItem];
        $return     = $this->emitSignal('preHydrate', $arguments);
        $importItem = $return['importItem'];

        $gallery = $this->initializeGalleryRecord($importItem);
        $this->hydrateMediaImportRecord($gallery, $importItem,
$importItemOverwrite);
        $this->persistenceManager->persistAll();
    }
}


Habt ihr eine Idee woran es liegen kann, dass die Dateien nicht der
FileCollection hinzugefügt werden?
Wenn ich per debug($fileCollection) ausgeben lasse, wird mir angezeigt,
dass sich theoretisch Dateien in dem Object befinden.

Danke und Viele Grüße
Oliver


More information about the TYPO3-german mailing list