Film verwaltungs Ext. - Starthilfe

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    12. 08. 2011, 09:45

    Guten Morgen,
    um ein bisschen sicherer im Umgang mit Extbase und Fluid zu werden und weils Spaß macht damit zu programmieren, wollte ich mir eine kleine Film verwaltungs Ext. schreiben.

    Ist auch das erste mal das ich mit dem Domain-Driven-Design arbeite, deshalb hoffe ich wircklich das ihr ein paar Minuten für mich übrig habt - bin mir nämlich nicht sicher ob mein Modell überhaupt so richtig ist.

    Mit der Ext. möchte ich meine Filme verwalten und auch anzeigen lassen.

    Folgendes habe ich mir überlegt:
    Jeder Film soll ein Objekt sein dem ich Regisseure, Schauspieler und Genres zuordnen kann.
    Im FE soll eine Liste aller Filme ausgegeben werden aus der ich einen Auswählen kann.
    Wenn ein Film ausgewählt wird soll ein Menü (Allgemein, Regiseur, Schauspieler) ausgegeben werden, jeder Menüpunkt soll dann die jeweiligen Daten anzeigen.

    Ich habe also die Objekte...
    - Film (Aggregate Root, Entity, m:n Regiseur, m:n Schaus., m:n Genre),
    - Regiseur (Entity),
    - Schauspieler (Entity)
    - Genre (Entity)

    Das ganze habe ich mal so in den extension-builder übertragen und mir die Dateien generieren lassen - einfach eine super Erweiterung!
    Ich bin mir aber nicht sicher wie ich das Menü realisieren kann, konnt dazu auch leider keine richtigen Beispiele finden.

    Wie kann ich so ein Menü am besten realisieren?

    Habe mir schon ein paar gedanken gemacht, bin mir aber nicht sicher ob das so okey ist:
    Ein Partial mit Links im Film-Template "Show.html" in dem ich auf Actions im FilmController verweise.
    Die Actions ersetzen dann im Template die "section" für den Inhalt mit den jeweiligen Text.

    Viele Grüße
    Jakob!


  • 1
  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    12. 08. 2011, 14:32

    Hey,
    ein bisschen weiter bin ich jetzt schon. :)

    Hab mir jetzt einen Partial geschrieben in dem ich die Links erzeuge:

    1. <?php
    2. <f:link.action controller="Movie" action="actor">Schauspieler</f:link.action>
    3. ?>

    Die Action steht im MovieController:

    1. <?php
    2. public function actorAction(Tx_MyMovie_Domain_Model_Movie $movie) {
    3. $movie = $this->movieRepository->findActorByMovie($movie);
    4. $this->view->assign('movie', $movie);
    5. }
    6. ?>

    Das ist in meinem MovieRepository (erbt von Tx_Extbase_Persistence_Repository):

    1. <?php
    2. public function findActorsByMovie(Tx_MyMovie_Domain_Model_Movie $movie) {
    3. return 'Hallo Welt';
    4. }
    5. ?>

    Ich wollte erstmal zum testen "Hallo Welt" zurückgeben, um zu sehen ob er mir überhaupt was ausgibt, klappt aber leider nicht.
    Wenn ich in meinem Menü auf Schauspieler klicke springt er mir immer in die Listen-Ansicht, also "List.hmlt".

    Weiß jemand woran das liegen könnte, kann keinen fehler finden?

    Viele Grüße
    Jakob

  • JakobRa JakobRa
    Jedi-Ritter
    0 x
    135 Beiträge
    0 Hilfreiche Beiträge
    15. 08. 2011, 14:57

    Jetzt hab ich doch was hingekriegt. =)

    So erzeug ich meine Links in der Listenansicht, diese zeigen auf eine Andere Seite wo das Plugin für die Single-Ansicht liegt:

    1. <?php
    2. /**
    3. * @param Tx_MyMovie_Domain_Model_Movie $movie the movie to display
    4. * @return void
    5. */
    6. public function gotosinglemovieAction(Tx_MyMovie_Domain_Model_Movie $movie) {
    7. $uri = t3lib_div::makeInstance('Tx_Extbase_MVC_Web_Routing_UriBuilder');
    8. // todo: die ID muss noch aus der Konf. gelesen werden
    9. $uri = $this->uriBuilder->setTargetPageUid(57)
    10. ->uriFor('show', array('movie' => $movie));
    11. $this->redirectToURI($uri);
    12. }
    13. ?>

    und mein Template:
    1. <?php <f:link.action action="gotosingleview" arguments="{movie : movie}"> {movie.title}</f:link.action> ?>

    Vielleicht habt ihr ja einen Tipp für mich wie ich das besser machen kann.

    Viele Grüße,
    Jakob

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    27. 09. 2011, 09:53

    Ich habe auch gerade vor etwas ähnliches zu verwirklichen.
    Ich würde aber z.B. nicht zwischen Regisseur und Schauspieler unterscheiden und beides als ein Model anlegen... sind ja alles Personen. Der Film hat dann mehrere Relations (actors, directors) zum selben Model (person)...

    Die Amazon API wäre natürlich noch etwas feines... hast Du dir das mal angeschaut?

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    27. 09. 2011, 10:01

    Zu dem Problem mit

    1. <f:link.action action="gotosingleview" arguments="{movie : movie}"> {movie.title}</f:link.action>

    warum nicht mit:

    1. <f:link.action action="show" arguments="{movie : movie}" pageUid="57"> {movie.title}</f:link.action>

    der link viewhelper kennt die option pageUid.

    Das ist der "elegantere" Weg wie mir scheint.
    Ich empfehle auf jeden fall das Extbase/Fluid Cheat Sheet!
    [url=http://www.typovision.de/cheatsheet/]http://www.typovision.de/cheatsheet/[/url]

  • 1