[Frage] tx_news - einen IRRE Datensatz im fluid Template ausgeben

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    16. 12. 2014, 10:55

    Hallo liebe Gemeinde,

    ich habe tx_news mit einem IRRE Feld erweitert. Nun möchte ich diese Datensätze (gestapelt) im fluid Template ausgeben. Ich denke das geht über eine Schleife. Gibt es dazu irgedwo ein Beispiel?

    Danke für einen Tipp

    LG D.


  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    16. 12. 2014, 15:34

    Hallo Nochmal,
    hat niemand sowas schon einmal gebraucht?

    bei Angabe des IRRE-Feldes Merkmal {newsItem.merkmal} steht immer sowas:

    DF\DfNews\Domain\Model\Merkmal:1

    Es sind bereits 3 Merkmal-Datensätze hinterlegt. Ein Merkmal-Datensatz beinhaltet 2 Felder, "bezeichnung" und "wert" und sollen untereinander

    Bezeichnung 1: Wert 1
    Bezeichnung 2: Wert 2

    ausgegeben werden.

    Alles haut nicht hin, getesteten Schleifen werfen einen TYPO3-Error aus. Googeln hat nicht wirklich was gebracht. Kann niemand helfen?

  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    16. 12. 2014, 16:05

    Wie sieht der Getter für die IRRE Elemente (samt Annotations) für die News aus? Und existiert auch ein Model mit den Gettern für das Merkmal?

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    16. 12. 2014, 16:15

    Hui,

    kalt erwischt. Ich glaube da fehlt noch einiges. Aber du mögest mir verzeihen, IRRE und Fluid ist noch komplettes Neuland für mich. Reichen die Informationen?

    1. /**
    2.  * News
    3.  */
    4. class News extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    5. /**
    6. * Returns the merkmal
    7. *
    8. * @return \DF\DfNews\Domain\Model\Merkmal $merkmal
    9. */
    10. public function getMerkmal() {
    11. return $this->merkmal;
    12. }
    13.  
    14. /**
    15. * Sets the merkmal
    16. *
    17. * @param \DF\DfNews\Domain\Model\Merkmal $merkmal
    18. * @return void
    19. */
    20. public function setMerkmal(\DF\DfNews\Domain\Model\Merkmal $merkmal) {
    21. $this->merkmal = $merkmal;
    22. }

    Und ja. Es existiert auch ein Model für das Merkmal:

    1. /**
    2.  * Merkmal
    3.  */
    4. class Merkmal extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    5.  
    6. /**
    7. * bezeichnung
    8. *
    9. * @var string
    10. */
    11. protected $bezeichnung = '';
    12.  
    13. /**
    14. * wert
    15. *
    16. * @var string
    17. */
    18. protected $wert = '';
    19.  
    20. /**
    21. * Returns the bezeichnung
    22. *
    23. * @return string $bezeichnung
    24. */
    25. public function getBezeichnung() {
    26. return $this->bezeichnung;
    27. }
    28.  
    29. /**
    30. * Sets the bezeichnung
    31. *
    32. * @param string $bezeichnung
    33. * @return void
    34. */
    35. public function setBezeichnung($bezeichnung) {
    36. $this->bezeichnung = $bezeichnung;
    37. }
    38.  
    39. /**
    40. * Returns the wert
    41. *
    42. * @return string $wert
    43. */
    44. public function getWert() {
    45. return $this->wert;
    46. }
    47.  
    48. /**
    49. * Sets the wert
    50. *
    51. * @param string $wert
    52. * @return void
    53. */
    54. public function setWert($wert) {
    55. $this->wert = $wert;
    56. }
    57.  
    58. }

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    16. 12. 2014, 16:33

    Kleiner Nachtrag,

    wenn ich im Template {newsItem.merkmal.wert} angebe, dann wird der richtige Wert des ersten Datensatzes ausgegegeben. Wie aber konstruiere ich eine Schleife, die alle Datensätze hintereinander ausgibt?

    egal welche Versuche ich mit Schleifen mache, TYPO3 gibt den Fehler aus:

    The argument "each" was registered with type "array", but is of type "object" in view helper "TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper"

    Ich glaube ich bin auf dem Holzweg, brauche so einen ViewHelper? Gibt es schon einen passenden?

    Das Internet ist groß aber auch nach Stunden habe ich keine Lösung gefunden.

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    17. 12. 2014, 11:04

    ich komme ohne Hilfe nicht weiter. Kann niemand einen Tipp geben? :'(

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    17. 12. 2014, 11:04

    ich komme ohne Hilfe nicht weiter. Kann niemand einen Tipp geben? :'(

  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    17. 12. 2014, 13:30

    In den Annotations von getMerkmal musst Du den return Wert als ObjectStorage deklarieren sonst gibts nur ein Merkmal zurück:

    @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal> $merkmal

    Und in der Deklaration des Attributs muss es ebenfalls so deklariert sein

    /**
    * Merkmale
    * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal>
    **/
    protected $merkmal;

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    17. 12. 2014, 13:50

    tut mir leid, ich bin zu doof das zu kapieren. Aus deinem Beispiel kann ich nicht die Schreibweise für den Code ableiten. Und auch weiß ich nicht, wie ich im fluid dann die Abfrage für die Schleife aussehen muss. Es wäre nett wenn Du mit das als EInsteiger etwas genauer schreibst, was ich wo einfügen soll. Entschuldigung :/

  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    17. 12. 2014, 14:02

    1. /**
    2.  * News
    3.  */
    4. class News extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    5.  
    6. /**
    7.   * Merkmale
    8.   * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal>
    9.   **/
    10. protected $merkmal;
    11.  
    12. /**
    13. * Returns the merkmal
    14. *
    15. * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal> $merkmal
    16. */
    17. public function getMerkmal() {
    18. return $this->merkmal;
    19. }
    20.  
    21. /**
    22. * Sets the merkmal
    23. *
    24. * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal> $merkmal
    25. * @return void
    26. */
    27. public function setMerkmal(\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\DF\DfNews\Domain\Model\Merkmal> $merkmal) {
    28. $this->merkmal = $merkmal;
    29. }

    In etwa so nur in schön. Wenn du im Fluid einen Objectstorage erhälst kannst Du den in einem For each durch gehen.