turk porno porno escort rokettube
Ergebnis 1 bis 6 von 6

Thema: Controller Name in Factory ermitteln

  1. #1
    Neuer Benutzer
    Registriert seit
    20.03.2015
    Beiträge
    12
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Controller Name in Factory ermitteln

    Hallo,

    ich muss in einer Factory, die einen Service erstellt, den Controllernamen ermitteln. Die ServiceFactory wird in Module.php in der Methode onBootstrap initialisiert und bekommt natürlich den ServiceLocator übergeben. Mittels ServiceLocator kann ich via get() auf verschiedene Klassen zugreifen, aber ich komme einfach nicht zum MvcEvent oder zu
    • getRouteMatch()

    Hat jemand eine Idee?

    VG
    fitti



  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Willkommen im Forum!
    Zitat Zitat von fitti70 Beitrag anzeigen
    ich muss in einer Factory, die einen Service erstellt, den Controllernamen ermitteln.
    Ich nehme an, du meinst einen „Service“ wie er in der ZF-Doku beschrieben ist.
    Leider sehe ich hier ein Problem in deiner Vorgehensweise, denn ein Service-Objekt muss nicht wissen, von wem es verwendet wird. Soll heißen, der Kontrollername oder gar die Existenz von Kontrollern haben nichts in einem Service-Objekt zu suchen. Auch für das reine Anlegen eines Service-Objekts, sollte es irrelevant sein, welcher Kontroller aktuell aufgerufen wird. Du schaffst hier ansonsten Abhängigkeiten, die dir früher oder später das Genick brechen.
    Schaffe eine klare Trennung zwischen Service- und Kontroller-Objekt.

    Zitat Zitat von fitti70 Beitrag anzeigen
    Die ServiceFactory wird in Module.php in der Methode onBootstrap initialisiert und bekommt natürlich den ServiceLocator übergeben.
    Wozu in „Module.php“? Die Angabe in der Modul-Konfiguration sollte ausreichend sein. (Beispiel)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Neuer Benutzer
    Registriert seit
    20.03.2015
    Beiträge
    12
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hallo,

    vielen Dank für die Antwort.

    Ich habe das zum Anlass genommen, ein bisschen aufzuräumen und die entsprechenden Funktionen auszulagern. Vielleicht kannst du mir noch mal Rückmeldung geben, ob es nun besser zur Logik des Frameworks passt?
    Der Service wird zwar immer noch in der Module.php initialisiert, weil dort auch die Session initialisiert und der Service im Anschluss den Controllern und Views als Plugin zur Verfügung gestellt wird.
    In der onBoostrap-Methode wird ein Listener initialisiert, der auf diesen Service zugreifen muss. (Es handelt sich um einen User-Service, der alle möglichen Aufgaben rund um den eingeloggten User abwickelt und an vielen Stellen benötigt wird.)

    Die Abfrage des Zielcontrollers habe ich aber jetzt in einen Listener ausgelagert.

    Mir ging es darum, bei Abfragen die per Ajax eingehen, bestimmte "Setups" des Services auszulassen. Zum Beispiel soll die Session in der Datenbank nur geupdatet werden, wenn wirklich ein Seitenaufruf (und nicht eine Ajax-Abfrage) erfolgt.
    Dies wird nun also vom Listener an den Service delegiert, außer der Controller befindet sich im Namespace "Ajax".


    Vielen Dank und Grüße,

    fitti

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Ich erlaube mir mal, mit ein paar Fragen zu antworten.

    Zitat Zitat von fitti70 Beitrag anzeigen
    Vielleicht kannst du mir noch mal Rückmeldung geben, ob es nun besser zur Logik des Frameworks passt?
    Warum zur Logik des Frameworks? Es ist deine Anwendung, dass Framework selbst gibt dir nur Empfehlungen oder weißt auf übliche Wege hin.

    Zitat Zitat von fitti70 Beitrag anzeigen
    Der Service wird zwar immer noch in der Module.php initialisiert, weil dort auch die Session initialisiert
    Warum? Nur weil irgendeine Session erzeugt wird, muss noch lange nicht das Service-Objekt an gleicher Stelle erstellt werden.

    Zitat Zitat von fitti70 Beitrag anzeigen
    und der Service im Anschluss den Controllern und Views als Plugin zur Verfügung gestellt wird.
    Wozu? Factory verwenden!

    Zitat Zitat von fitti70 Beitrag anzeigen
    In der onBoostrap-Methode wird ein Listener initialisiert, der auf diesen Service zugreifen muss. (Es handelt sich um einen User-Service, der alle möglichen Aufgaben rund um den eingeloggten User abwickelt und an vielen Stellen benötigt wird.)
    Und? Den Listener kannst du doch erstellen, aber das Service-Objekt ist doch in dem Moment uninteressant.

    Zitat Zitat von fitti70 Beitrag anzeigen
    Die Abfrage des Zielcontrollers habe ich aber jetzt in einen Listener ausgelagert.
    Warum klammerst du dich an den Kontroller? Vergiss dies, denn hier fängst du wieder an, das Wissen über die Existenz von Kontrollern über die ganze Anwendung zu verstreuen. Das muss niemand wissen, das will niemand wissen.

    Klar, du willst auf Ajax raus, aber dann setze dies richtig um: Prüfe das „Request“-Objekt ob es sich um eine Ajax-Anfrage handelt. („Zend\Http\Request::isXmlHttpRequest“)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Neuer Benutzer
    Registriert seit
    20.03.2015
    Beiträge
    12
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Vielen Dank Kaiuwe.
    Die Fragen sind berechtigt, ich muss da noch mal ran und ein paar grundlegende Dinge ändern.
    Die Lösung der Request-Abfrage ist so einfach wie genial. Ich habe nächtelang gebrütet, wie man das am elegantesten lösen kann. Jetzt habe ich zwar ein schickes Ajax-Modul, werde aber trotzdem alles nochmal umkrempeln... :-)
    VG
    fitti

  6. #6
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    In deine Überlegungen solltest du folgendes mit einbeziehen: Jede Modul-Klasse sollten sauber bleiben! (Sauber heißt: nur die Methode „getConfig“ ist enthalten)

    Damit zwingt man sich selbst, eine geeignete Lösung zu finden. (Die geeignete Lösung ist dann meist der richtige Weg.)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Controller Factory Interface, Kapitel 8.6.4 [Galileo]
    Von fitti im Forum Zend Framework 2 Buch
    Antworten: 11
    Letzter Beitrag: 21.03.2014, 13:14
  2. Zend_Http_Response::factory()
    Von 2zends im Forum Einsteigerfragen
    Antworten: 2
    Letzter Beitrag: 06.01.2010, 05:49
  3. Wie den Controller im Layout ermitteln?
    Von eSEFEROVIC im Forum Einsteigerfragen
    Antworten: 9
    Letzter Beitrag: 30.11.2009, 23:14
  4. Zend_Db Factory
    Von Blackmail80 im Forum Installation & Konfiguration
    Antworten: 2
    Letzter Beitrag: 05.09.2008, 18:29
  5. Ermitteln von aktuellem Controller und Action
    Von dhenninger im Forum MVC
    Antworten: 2
    Letzter Beitrag: 24.04.2008, 15:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •