ValueObject in selectfeld ausgeben

  • sobi555 sobi555
    Jedi-Meister
    0 x
    283 Beiträge
    2 Hilfreiche Beiträge
    27. 03. 2013, 12:19

    Jungs und Mädels,
    ich komm nicht weiter und brauche Hilfe.

    In meinem Controller möchte ich Values eines Objektes in einem Selectfeld ausgeben.

    1. $testArray = array(1=>"test1",2=>"test2" );
    2. $this->view->assign('test', $testArray );

    Das funktioniert auch, aber wie bekomme ich in das "testArray" die Werte aus der DB?? :(

    So sieht mein Model aus:

    1. class Marke extends \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject {
    2.  
    3. /**
    4. * Marke
    5. *
    6. * @var \string
    7. */
    8. protected $marke;
    9.  
    10. /**
    11. * Returns the marke
    12. *
    13. * @return \string $marke
    14. */
    15. public function getMarke() {
    16. return $this->marke;
    17. }
    18.  
    19. /**
    20. * Sets the marke
    21. *
    22. * @param \string $marke
    23. * @return void
    24. */
    25. public function setMarke($marke) {
    26. $this->marke = $marke;
    27. }
    28.  
    29. }

    Versteht ihr, was ich meine??

    LG - Simon


  • 1
  • karf karf
    T3PO
    0 x
    25 Beiträge
    0 Hilfreiche Beiträge
    27. 03. 2013, 14:45

    Ich verstehe dein Problem irgendwie nicht wirklich.

    Kannst du dir die Objekte nicht einfach aus dem Repository ziehen?

  • sobi555 sobi555
    Jedi-Meister
    0 x
    283 Beiträge
    2 Hilfreiche Beiträge
    28. 03. 2013, 23:25

    Ein Repository wird doch nur erstellt, wenn ich es als "Is aggregate root?" definiert habe. Wie mache ich das, wenn ich das nicht definiert habe!? - Definieren!?? ^^

  • harald1972 harald197...
    Sternenflotten-Admiral
    0 x
    198 Beiträge
    13 Hilfreiche Beiträge
    03. 04. 2013, 21:17

    [quote="sobi555"]
    Ein Repository wird doch nur erstellt, wenn ich es als "Is aggregate root?" definiert habe. Wie mache ich das, wenn ich das nicht definiert habe!? - Definieren!?? ^^
    [/quote]
    Das kann für den ExtensionBuilder gelten - macht aber nichts.
    Wenn du ein Repository brauchst - und das ist fast immer der Fall - musst du dir eins definieren.
    Wenn du (dank ExtensionBuilder) wenigstens eins hast, nimmst du dieses, kopierst es und bearbeitest eigentlich nur den Namen der Klasse und der Datei.

    Wenn ich dich richtig verstanden habe, ist die Antwort auf deine Frage leicht.

    Wenn dein Model-Object 'Marke' heißt (und deine Extension 'DeineExtension'), solltest du in deinem Ordner Classes/Domain/Repository eine Datei MarkeRepository.php mit folgendem Inhalt haben:

    1. class Tx_DeineExtension_Domain_Repository_MarkeRepository extends Tx_Extbase_Persistence_Repository {
    2. }

    Dein Repository braucht normalerweise nichts weiteres.
    Dann musst du eben das tun, was karf meint... in deiner action diesen Aufruf

    1. $this->view->assign('test', $this->markeRepository->findAll());

    und selbst($this)-verständlich in deinem Controller dieses $markeRepository definieren und injecten.
    also ungefähr so:

    1. /**
    2.  * markeRepository
    3.  * @var Tx_DeineExtension_Domain_Repository_MarkeRepository
    4.  */
    5. protected $markeRepository;
    6. /**
    7.  * injectMarkeRepository
    8.  * @param Tx_DeineExtension_Domain_Repository_MarkeRepository $markeRepository
    9.  * @return void
    10.  */
    11. public function injectMarkeRepository(Tx_DeineExtension_Domain_Repository_MarkeRepository $markeRepository) {
    12. $this->markeRepository = $markeRepository;
    13. }

    Das sind eigentlich Grundlagen. Was ich bis hier gesagt hab, steht in mehreren Grundkursen, Anleitungen, Tutorials. Mehr hab ich aber aus deiner Frage nicht herauslesen können.

    Gruß Harald

    P.S.: Ich verwende noch die alte Vor-Namespaces-Schreibweise. Ich hab mich mit der neuen (noch) nicht befasst. Aber das solltest du wohl hinkriegen.
    2.P.S.: In deiner View musst du natürlich mit dem Array 'test' was-auch-immer anstellen.
    Sollte deine Frage in diese Richtung gehen, musst du sie neu stellen. ;)

  • 1