Mehrere Bilder (FAL) ausgeben mittels Anpassung im Domain Model in eigener Extension oder nach kickstart mithilfe der Extension Extension Builder (Feldtyp Image oder File).
Wenn man eine Extension mit dem extension_builder kickstartet und in seiner Tabelle ein Feld für Bilder hinzufügt gibt es nur ein Bild aus, da das Domain Model nicht ganz richtig implementiert ist. Kontrolliert die folgenden Dateien:
EDIT 19.6.2017 – der Extension Builder ab Version 7.6.16 implementiert die Bilder richtig!
Datenbank Feld
Datei deinextensionkey/ext_tables.sql
1 2 3 |
... bilder int(11) unsigned NOT NULL default '0', ... |
Domain Model
Datei deinextensionkey/Classes/Domain/Model/*.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
/** * bilder * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @cascade remove */ protected $bilder = null; /** * __construct */ public function __construct() { $this->initStorageObjects(); } /** * @return void */ protected function initStorageObjects() { $this->bilder = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); } /** * Returns the bilder * * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $bilder */ public function getBilder() { return $this->bilder; } /** * Sets the bilder * * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $bilder * @return void */ public function setBilder(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $bilder) { $this->bilder = $bilder; } |
TCA Konfiguration
in der TCA Konfiguration noch bei dem betreffenden Feld die „maxitems“ raufsetzen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
'bilder' => array( 'exclude' => 0, 'label' => 'dein Label Pfad', 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'bilder', array( 'appearance' => array( 'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference' ), 'foreign_types' => array( '0' => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ), \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ), \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ), \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ), \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ), \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => array( 'showitem' => ' --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;;filePalette' ) ), 'maxitems' => 100 ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ), ), |
Ausgabe
1 2 3 |
<f:for each="{model.bilder}" as="bild"> <f:image image="{bild.originalResource}" width="500c" height="400c" alt="{bild.originalResource.title}"/> </f:for> |
Hans-Georg
Februar 18, 2018 — 6:45 pm
der extension_builder verwendet für $bilder nur \TYPO3\CMS\Extbase\Domain\Model\FileReference, wenn ich dies mit @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage ersetze bekomme ich die Fehlermeldung #Cannot cast object of type „TYPO3\CMS\Extbase\Persistence\ObjectStorage“ to string#, welche ich nicht verstehe, da es sich ja bei der Filereference nicht um einen String handelt.
LG, Hans-Georg
Stefan Schoner
Februar 18, 2018 — 7:54 pm
Hi Hans, hast du im Domain Model den korrekten Namespace verwendet?
\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
Wenn du mit dem Extensionbuilder über Version 7.16 arbeitest sollte es eine Einstellung für mehrere Bilder geben, dann wird er Code richtig generiert.
Du kannst mich gerne auf Slack (typo3 channel) anschreiben, falls du Hilfe benötigst 🙂
lg
tbauer
April 7, 2017 — 10:16 am
Hallo,
weißt du warum ich mit dem Code folgenden Fehler bekomme?
The argument „each“ was registered with type „array“, but is of type „object“ in view helper „TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper“
Daniel Stockner
April 10, 2017 — 6:20 am
Hallo
Hast du die Änderungen an allen vier Stellen gemacht?
Kannst du im BE mehrere Bilder eingeben?
Hast du nach den Änderungen den Cache geleert?
SG
Daniel