[Frage] Mehrere Bilder ausgeben (7.6.3) [Gelöst] TYPO3-Version: -

  • 0 x
    22 Beiträge
    1 Hilfreiche Beiträge
    07. 03. 2016, 12:30

    Hallo zusammen,

    ich habe eine Erweiterung geschrieben, die je Album mehrere Bilder ausgeben soll. Diese werden im Backend über das Feld Image eingepflegt. Alles soweit so gut, es lassen sich beliebig viele Bilder speichern und wenn ich das Album im Backend aufrufe, werden auch wieder alle Bilder angezeigt.
    Die Crux an der ganzen Sache ist das Frontend.
    Ein Debug zeigt hier nur ein einziges Bild (das erste in der Liste).
    Ich hab keinen Schimmer weshalb diese nicht angezeigt werden...

    Bin für jede Hilfe dankbar

    VG Michael

    MODEL:

    1. /**
    2.   * images
    3.   *
    4.   * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
    5.   */
    6. protected $images = null;
    7.  
    8. /**
    9.   * Returns the images
    10.   *
    11.   * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $images
    12.   */
    13. public function getImages()
    14. {
    15. return $this->images;
    16. }
    17.  
    18. /**
    19.   * Sets the images
    20.   *
    21.   * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $images
    22.   * @return void
    23.   */
    24. public function setImages(\TYPO3\CMS\Extbase\Domain\Model\FileReference $images)
    25. {
    26. $this->images = $images;
    27. }

    TCA:

    1. 'images' => array(
    2. 'exclude' => 1,
    3. 'label' => 'LLL:EXT:fdgifotoa/Resources/Private/Language/locallang_db.xlf:tx_fdgifotoa_domain_model_album.images',
    4. 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
    5. 'images',
    6. 'appearance' => array(
    7. 'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
    8. ),
    9. 'foreign_types' => array(
    10. '0' => array(
    11. 'showitem' => '
    12. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    13. --palette--;;filePalette'
    14. ),
    15. \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => array(
    16. 'showitem' => '
    17. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    18. --palette--;;filePalette'
    19. ),
    20. \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => array(
    21. 'showitem' => '
    22. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    23. --palette--;;filePalette'
    24. ),
    25. \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => array(
    26. 'showitem' => '
    27. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    28. --palette--;;filePalette'
    29. ),
    30. \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => array(
    31. 'showitem' => '
    32. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    33. --palette--;;filePalette'
    34. ),
    35. \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => array(
    36. 'showitem' => '
    37. --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
    38. --palette--;;filePalette'
    39. )
    40. ),
    41. 'maxitems' => 99
    42. ),
    43. $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
    44. ),
    45. ),

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2852 Beiträge
    105 Hilfreiche Beiträge
    15. 03. 2016, 09:27 - Lösung

    Hallo Michael.

    Die Darstellung/Funktion des Backends hängt rein vom TCA ab (zumindest der wesentliche Teil). Das Frontend bzw. Extbase konzentriert sich hingegen auf die Domain-Models. D.h. wenn das eine funktioniert, heißt das nicht automatisch, dass das andere auch tut.

    Deine Fehlerursache versteckt sich im Model: $images ist vom Typ FileReference. Der Variablen kann man also [b]eine[/b] FileReference zuweisen. Du möchtest hier aber [b]mehrere[/b] FileReferences verwenden. D.h. Du müsstest $images in ein ObjectStorage von FileReferences umwandeln:

    1. /**
    2.  * images
    3.  *
    4.  * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
    5.  */
    6. protected $images = null;

    Die üblichen Getter/Setter wären dann addImage, removeImage, setImages, getImages.
    Falls Du da nicht weiterkommst, einfach nochmal melden.

    Viele Grüße
    Julian


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    2852 Beiträge
    105 Hilfreiche Beiträge
    15. 03. 2016, 09:27

    Hallo Michael.

    Die Darstellung/Funktion des Backends hängt rein vom TCA ab (zumindest der wesentliche Teil). Das Frontend bzw. Extbase konzentriert sich hingegen auf die Domain-Models. D.h. wenn das eine funktioniert, heißt das nicht automatisch, dass das andere auch tut.

    Deine Fehlerursache versteckt sich im Model: $images ist vom Typ FileReference. Der Variablen kann man also [b]eine[/b] FileReference zuweisen. Du möchtest hier aber [b]mehrere[/b] FileReferences verwenden. D.h. Du müsstest $images in ein ObjectStorage von FileReferences umwandeln:

    1. /**
    2.  * images
    3.  *
    4.  * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
    5.  */
    6. protected $images = null;

    Die üblichen Getter/Setter wären dann addImage, removeImage, setImages, getImages.
    Falls Du da nicht weiterkommst, einfach nochmal melden.

    Viele Grüße
    Julian

  • 0 x
    22 Beiträge
    1 Hilfreiche Beiträge
    18. 03. 2016, 15:39

    Hallo Julian,

    ich werde Deinen Vorschlag gleich mal testen.
    Danke :)

    VG
    Michael

  • 0 x
    22 Beiträge
    1 Hilfreiche Beiträge
    18. 03. 2016, 15:39

    Hallo Julian,

    ich werde Deinen Vorschlag gleich mal testen.
    Danke :)

    VG
    Michael

  • 1