File Abstraction Layer in TYPO3

 FAL in eigener Extension verwenden.

Die File Abstraction Layer (FAL) wurde mit der TYPO3 Version 6.0 eingeführt. Bis 6.0 wurden alle Bilder für jede Verwendung in den uploads Ordner kopiert - mit der FAL können jetzt die Bilddateien referenziert werden.

Für jede Datei benötigen wir einen file-Datesatz und zum Einbinden in unseren Content jedesmal einen file reference Datensatz. Wenn wir also in einem TCA Formular eine neue Datei in einem FAL Feld hochladen werden im Hintergrund automatisch immer diese beiden Datensätze erstellt.

Solange wir die Datei in der Fileliste oder über das Contentelement hochladen und die Standard TCA Formulare benutzen, brauchen wir uns wenig um die Logik zu kümmern. Anders ist dies bei eigenen Uploadfeldern im Front- oder Backend, siehe dazu den Artikel "FAL - Dateiupload im Forntend".

Ein Beispiel wie FAL Felder in eigenen Extensions aussehen:


FAL in eigener Extension nutzen

Zunächst brauchen wir in unsere Extension ein Image Feld, in diesem Beispiel nutze ich "mypictures". Also definieren wir das Feld in der ext_table.sql unserer Extension:

 

CREATE TABLE tx_myextension_domain_model_content (
    ...
    mypictures varchar(255) DEFAULT '' NOT NULL,
    ...
)

 

In der TCA Type und Columns Section müssen wir das Feld "mypictures" noch aufnehmen und können dann im Backend unserem Datensatz Bilder hinzufügen.

$TCA['tx_myextension_domain_model_content'] = array(
        ...
        'mypictures' => array(
                'exclude' => 1,
                'label' => 'My Pictures',
                'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', array(
                        'appearance' => array(
                                'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
                        ),
                        'minitems' => 0,
                        'maxitems' => 99,
                ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
        ),

Ergänzung des Extbase Models

Da wir in der TCA angegeben haben mehrere Bilder zu erlauben('maxitems' => 99), müssen wir unsere Object mypictures als ObjectStorage definieren:

 

    /**
     * mypictures
     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
     */
    protected $mypictures;

   /**
    * Returns mypictures
    *
    * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $postpictures
    */
    public function getMypictures() {
        return $this->mypictures;
    }

Die FAL Ausgabe in Fluid

Im Fluid Template müssen wir nun unser mypicture Ergebnis mir einer for-each Shleife durchlaufen:

 

<f:for each="{mymodel.mypictures}" as="picture">
    <!-- Ausgabe als Bild -->
    <f:image src="{mypicture.image.uid}" alt="" treatIdAsReference="TRUE" />


    <!-- Ausgabe als Link -->
    <a href="{mypictur.image.originalResource.publicUrl}">{mypicture.image.originalResource.title}</a>
</f:for>


Wenn Ihr das FAL Feld in Fluid debuggt seht ihr alle möglichen Werte die ihr ausgeben könnt, z.B. alt und titel Texte.

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

TYPO3 Extbase: Moderne Extension-Entwicklung für TYPO3

Ein nahezu perfektes Buch für TYPO3 Extensionentwickler die mit Extbase und Fluid beginnen, aber auch erfahrene Entwickler finden noch Anregungen um ihre eigene Arbeit ständig zu verbessern. Sehr ausführlich, kurzweilig, kein Lesestoff für die Couch sondern eher ein Mitmachbuch das Spaß und Unterstützung bei der eigenen Extensionentwicklung bietet.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.