turk porno porno escort rokettube
Ergebnis 1 bis 12 von 12

Thema: Controller Factory Interface, Kapitel 8.6.4 [Galileo]

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

    Standard Controller Factory Interface, Kapitel 8.6.4 [Galileo]

    Hallo,

    ich habe mich am Beispiel in Kapitel 8.6.4 orientiert, um einen Controller über eine Factory zu injizieren.
    Der Controller erhält einen EventManager und wird von der createService Methode retourniert.

    Das funktioniert soweit, aber die Action Methode wird nicht aufgerufen. In der Route ist festgelegt, dass showAction aufgerufen werden soll.

    PHP-Code:
    'router' => array(
            
    'routes' => array(
                
    'home' => array(
                    
    'type' => 'Zend\Mvc\Router\Http\Literal',
                    
    'options' => array(
                        
    'route'    => '/',
                        
    'defaults' => array(
                            
    'controller' => 'login',
                            
    'action'     => 'show',
                        ),
                    ),
                ), 
    login verweist auf die Factory, die Factory holt sich über den Service Manager den eigentlichen Controller. Klappt soweit.

    PHP-Code:

    class LoginControllerFactory implements FactoryInterface
    {
        public function 
    createService(ServiceLocatorInterface $serviceLocator)
        {
            
    $loginListener $serviceLocator->getServiceLocator()->get('LoginListener');
            
    $eventManager = new EventManager();
            
    $eventManager->attachAggregate($loginListener);
            
    $controller $serviceLocator->get('Singles\LoginController');
            
    $controller->setEventManager($eventManager);
            return 
    $controller;
        }

    Es wird aber eine Seite ohne ViewModel ausgegeben, weil die showAction nicht aufgerufen wird.
    Bevor ich es über die Factory gemacht habe, funktionierte die Route und showAction wurde ausgeführt.
    Muss man bei der Routendefinition irgendwas beachten, wenn eine Factory ins Spiel kommt?

    Viele Grüße,

    fitti
    Geändert von fitti (20.03.2014 um 00:28 Uhr) Grund: Formatierung

  2. #2
    Erfahrener Benutzer
    Registriert seit
    18.05.2012
    Beiträge
    156
    Thanks
    5
    Thanked 29 Times in 22 Posts

    Standard

    Nein, bei der Route ändert sich nichts. Dein Fehler wird wohl eher in der Factory selbst liegen. Ich tippe mal darauf, dass es an folgender Zeile liegt:

    PHP-Code:
    $controller $serviceLocator->get('Singles\LoginController'); 
    Ich kenne es nämlich nur, dass der Controller mit "new" erzeugt wird und zumindest in der ersten Auflage (Addison Wesley) ist das beim ersten Listing des genannten Kapitels auch der Fall. Versuch also mal

    PHP-Code:
    $controller = new LoginController(); 
    ggf. Namespace angeben bzw. den Controller via use importieren

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

    Standard

    Zitat Zitat von av3nger Beitrag anzeigen
    Dein Fehler wird wohl eher in der Factory selbst liegen. Ich tippe mal darauf, dass es an folgender Zeile liegt:

    PHP-Code:
    $controller $serviceLocator->get('Singles\LoginController'); 
    Ich kenne es nämlich nur, dass der Controller mit "new" erzeugt wird und zumindest in der ersten Auflage (Addison Wesley) ist das beim ersten Listing des genannten Kapitels auch der Fall. Versuch also mal
    Anders macht es auch keinen Sinn. Oder warum sollte es sonst eine Fabrik für diese Klasse geben, wenn die Klasse dann doch nicht dort erstellt wird?!
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  4. #4
    Neuer Benutzer
    Registriert seit
    20.03.2014
    Beiträge
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Danke für eure Antworten.
    Ich habe den Fehler mittlerweile gefunden. An der Initialisierung lag es nicht. Die lasse ich durch den ServiceManager machen, um Abhängigkeiten gering zu halten und über die Config evt. auch mal einen Test-Controller einzusetzen. Falls das zu ressourcenlastig oder umständlich ist, bitte noch mal kurz Bescheid geben.

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

    Standard

    Der eigentliche Fehler trat auf, weil ich im Controller getEventManager() und setEventManager() eingefügt habe.
    Nachdem ich sie entfernt habe, ließ sich der EventManager aber trotzdem noch zufügen und alles funktionierte wieder.
    Warum das so ist, ist noch nicht ganz klar.

    (Sorry für zwei Posts. vBulletin meinte unerlaubte Wörter zu entdecken, die ich erst rausfiltern musste)

  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

    Zitat Zitat von fitti Beitrag anzeigen
    Der eigentliche Fehler trat auf, weil ich im Controller getEventManager() und setEventManager() eingefügt habe.
    Du hast aber auch den Hinweis von av3nger beachtet?!
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    Neuer Benutzer
    Registriert seit
    20.03.2014
    Beiträge
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Du hast aber auch den Hinweis von av3nger beachtet?!
    ja schon. Habe ich ja im Post #4 was zu geschrieben. Welche Gründe sprechen gegen die Initialisierung durch den Service Manager?

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

    Standard

    Zitat Zitat von fitti Beitrag anzeigen
    ja schon. Habe ich ja im Post #4 was zu geschrieben. Welche Gründe sprechen gegen die Initialisierung durch den Service Manager?
    Das deine Klasse „Fabrik“ heißt, aber doch nichts selbst herstellt.

    Was macht denn der „Service-Manager“ so wichtiges, dass dieser für die Initialisierung/Erstellung benötigt wird?
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #9
    Neuer Benutzer
    Registriert seit
    20.03.2014
    Beiträge
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Also mich würde interessieren, ob wir jetzt über eine Geschmackssache sprechen, oder ob es triftige Gründe gibt, die gegen eine solche Initialisierung sprechen.

    Wenn ich es richtig verstanden habe, wird der Service Manager ohnehin in die Factory injiziert. Warum sollte ich ihn dann nicht einfach nutzen?
    Irgendwas scheint dich ja daran zu stören, aber ich weiß nicht was.

    Sollte ich einmal den Controller durch einen anderen tauschen, zum Beispiel TestLoginController, dann ändere ich dafür die Config-Datei. Das finde ich "geschmacklich" besser ;-)

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

    Standard

    Zitat Zitat von fitti Beitrag anzeigen
    Also mich würde interessieren, ob wir jetzt über eine Geschmackssache sprechen, oder ob es triftige Gründe gibt, die gegen eine solche Initialisierung sprechen.

    Wenn ich es richtig verstanden habe, wird der Service Manager ohnehin in die Factory injiziert. Warum sollte ich ihn dann nicht einfach nutzen?
    Irgendwas scheint dich ja daran zu stören, aber ich weiß nicht was.
    Es geht hier nicht um Geschmack, sondern das du hier ein Entwurfsmuster entführst und den Sinn aufhebst. Es gibt keine Daseinsberechtigung mehr für die Klasse aka Fabrik, wenn diese nicht mehr für die Erstellung der Kontroller-Klasse zuständig ist. Momentan stimmt damit die Anwendung mit Entwurfsmuster nicht überein und der Name der „LoginControllerFactory“ ist ebenfalls falsch.

    Zitat Zitat von fitti Beitrag anzeigen
    Sollte ich einmal den Controller durch einen anderen tauschen, zum Beispiel TestLoginController, dann ändere ich dafür die Config-Datei. Das finde ich "geschmacklich" besser ;-)
    Dann stimmt aber nicht mehr der Name „LoginControllerFactory“, wenn der zu erstellende Kontroller „RegisterController“ heißt.
    Das wäre ein falscher Geschmack.
    Geändert von Kaiuwe (21.03.2014 um 13:06 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  11. #11
    Benutzer
    Registriert seit
    30.05.2009
    Ort
    München
    Beiträge
    84
    Thanks
    0
    Thanked 37 Times in 14 Posts

    Standard

    Zitat Zitat von fitti Beitrag anzeigen
    Also mich würde interessieren, ob wir jetzt über eine Geschmackssache sprechen, oder ob es triftige Gründe gibt, die gegen eine solche Initialisierung sprechen.
    Du kommst in der Factory nicht mehr an den Constructor ran...
    ansonsten siehe Kaiuwe

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

    Standard

    O.k., damit kann ich was anfangen
    Danke.

Ähnliche Themen

  1. Kapitel 18/19 [Galileo-Auflage]
    Von matz im Forum Zend Framework 2 Buch
    Antworten: 2
    Letzter Beitrag: 07.10.2013, 12:29
  2. Interface nicht deklariert?
    Von froechrissi im Forum Einsteigerfragen
    Antworten: 5
    Letzter Beitrag: 20.03.2011, 13:30
  3. Administrative interface
    Von Wuschel im Forum Einsteigerfragen
    Antworten: 14
    Letzter Beitrag: 07.11.2010, 20:30
  4. interface mit Codegenerator generieren
    Von arghmusic im Forum Einsteigerfragen
    Antworten: 18
    Letzter Beitrag: 21.07.2009, 00:18
  5. Zend_Services_* vs. generelles Interface
    Von Florian im Forum Konzepte & Ideen
    Antworten: 1
    Letzter Beitrag: 29.02.2008, 19:29

Lesezeichen

Berechtigungen

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