[Frage] Repository liefert leere Datensätze?

  • maxhb maxhb
    Flash Gordon
    0 x
    2148 Beiträge
    0 Hilfreiche Beiträge
    24. 10. 2013, 11:34

    Hallo,
    schreibe gerade eine einfache Extension, in der Personendatensätze aus einer eigenen Tabelle per Fluid im FE ausgegeben werden sollen.

    Dazu habe ich ein Model für die Personen angelegt mit getter- und setter-Methoden für Name und Vorname. Ein Repository für die Personendaten existiert ebenfalls. Das Repository wird per Dependency-Injection in den von mir verwendeten Controller eingefügt.

    Die Ausgabe erfolgt zunächst über ein sehr einfaches Fluid-Template:

    1. <f:for each="{persons}" as="person">
    2. <f:debug>{person}</f:debug>
    3. </f:for>

    Rufe ich jetzt im Controller Daten ab, z.B. auf dem folgenden Weg, so erhalte ich nur leere Datensätze.

    [b]Controller Index-Action:[/b]

    1. public function indexAction() {
    2. $this->view->assign('persons', $this->personRepository->findByVorname('Rolf'));
    3. }

    [b]Ausgabe:[/b]

    1. |Object:
    2.  
    3. Tx_InsPbub_Domain_Model_Person Object
    4. (
    5. [name:_protected] =>
    6. [vorname:_protected] =>
    7. [uid:_protected] => 4906
    8. [_localizedUid:_protected] => 4906
    9. [_languageUid:_protected] =>
    10. [pid:_protected] => 124
    11. [_isClone:Tx_Extbase_DomainObject_AbstractDomainObject:_private] =>
    12. [_cleanProperties:Tx_Extbase_DomainObject_AbstractDomainObject:_private] => Array
    13. (
    14. [name] =>
    15. [vorname] =>
    16. [uid] => 4906
    17. [pid] => 124
    18. )
    19.  
    20. )

    (":" gefolgt von einem "p" habe ich oben immer durch ":_p" ersetzt, da sonst Smileys in der Ausgabe stehen...)

    An Hand der uids kann ich erkennen, dass die korrekten Datensätze gefunden werden, aber leider sind eben alle relevanten Properties leer, obwohl entsprechende getter- und setter-Methioden im Model definiert wurden.

    Kann mir jemand einen Tipp geben, was ich hier übersehe? Falls weitere Code-Auszüge meiner Extension benötigt werden bitte kurz Bescheid geben.

    TYPO3: 4.5.30
    Extbase: 1.3.4
    Fluid: 1.3.1

    Freue mich auf hilfreiche Hinweise,
    CU
    maxhb


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    24. 10. 2013, 14:26

    Fe-Cache hast du platt gemacht? Sind die Objekte per TS auf andere Tabellen gemappt? Getter falsch geschrieben?

    http://www.aemka.de/

  • maxhb maxhb
    Flash Gordon
    0 x
    2148 Beiträge
    0 Hilfreiche Beiträge
    24. 10. 2013, 15:17

    Hallo aemka!

    Zitiert von: aemka
    Fe-Cache hast du platt gemacht?

    Ja.
    Zitiert von: aemka
    Sind die Objekte per TS auf andere Tabellen gemappt?[/code]
    Nein.
    [quote=408285]Getter falsch geschrieben?

    Ich denke nicht, das Model sieht so aus:
    1. <?php
    2.  
    3. class Tx_MyExt_Domain_Model_Person extends Tx_Extbase_DomainObject_AbstractEntity {
    4. /**
    5.   * @var string
    6.   */
    7. protected $name;
    8.  
    9. /**
    10.   * @var string
    11.   */
    12. protected $vorname;
    13.  
    14. public function __construct($vorname, $name) {
    15. $this->setVorname($vorname);
    16. $this->setName($name);
    17. }
    18.  
    19. public function setName($name) {
    20. $this->name = $name;
    21. }
    22.  
    23. public function getName() {
    24. return $this->name;
    25. }
    26.  
    27. public function setVorname($vorname) {
    28. $this->vorname = $vorname;
    29. }
    30.  
    31. public function getVorname() {
    32. return $this->vorname;
    33. }
    34. }
    35.  
    36. ?>

    Die DB-Felder heissen "name" bzw. "vorname".

    Irgend ein Fehler im Model oder eine andere Idee, was da falsch läuft?

    CU
    maxhb

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    24. 10. 2013, 21:43

    Mal davon ausgehend, dass in Record 4906 auch wirklich name und vorname in der db gefüllt sind, kann es vlt. sein, dass "name" ein reservierter Name ist, der nicht verwendet werden darf?

    http://www.aemka.de/

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    25. 10. 2013, 09:03

    Welchen Sinn hat deine construct-function?
    Ich würde die mal komplett rausschmeißen...

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    25. 10. 2013, 09:22

    Stimmt, wenn Extbase dein Objekt constructet sind die construct parameter $name und $vorname ja gar nicht gefüllt und dann löscht du damit sofort name und vorname im objekt das ist vermutlich die Lösung. Ich würde mir alles immer von EXT:extension_builder generieren lassen und nicht selber unnötig kreativ werden, dann läufst du nur Gefahr an Extbase vorbei zu entwicklen und solche Fehler zu provozieren.

    http://www.aemka.de/

  • loon3x loon3x
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    25. 10. 2013, 13:26

    Noch eine weitere Lösungsidee...

    /**
    * name
    *
    * @var \string
    * @validate NotEmpty
    */
    protected $name;

    /**
    * Returns the name
    *
    * @return \string $name
    */
    public function getName() {
    return $this->name;
    }

    /**
    * Sets the name
    *
    * @param \string $name
    * @return void
    */
    public function setName($name) {
    $this->name = $name;
    }

    Bei mir sehen Getter und Setter so aus.

    Man beachte die Kommentare, ich meine Extbase zieht die Kommentare zur Validierung hinzu, zu mindestens bei den Properties, dann würde nahe liegen das es dies auch bei den Getter und Setter tut.

    Typo3 6.1

  • 1