2016-04-17 8 views
0

Ich habe Schwierigkeiten beim Debuggen von Objekten mit zend-db abgerufen von service-manager.Zend Debug nicht Service Locator ausgeben

Ich habe ein Modul mit dem folgenden Code in der onBootstrap Veranstaltung:

public function onBootstrap(MvcEvent $e) 
    $eventManager = $e->getApplication()->getEventManager(); 
    $moduleRouteListener = new ModuleRouteListener(); 
    $moduleRouteListener->attach($eventManager);   
    $translator = $e->getApplication()->getServiceManager()->get('translator'); 
    $translator->setLocale(\Locale::acceptFromHttp($request->getServer('HTTP_ACCEPT_LANGUAGE'))) 
       ->setFallbackLocale(System::config('i18n/fallback_language')); 
    \Zend\Debug\Debug::dump($translator);   
    die(); 
} 

Ich bin nicht ganz sicher, warum, aber aus irgendeinem Grund, wenn ich übergeben Sie den Übersetzer an den Debug-Rohlinge es den Bildschirm und Ausführung hält an. Interessant ist, dass es scheint, ein Problem zu sein, wenn Sie in dieser Phase auch andere Objekte verwenden.:

Ich bin mir nicht ganz sicher, was hier vor sich geht.

Ich weiß, dass diese Objekte gültig erstellte Objekte sind, wie die Anwendung funktioniert, aber aus irgendeinem Grund kann ich nichts aus dem Service-Locator debuggen.

Hier ist eine Liste meiner Ini-Einstellungen für den Fall, dass es mit einem PHP-Einstellungen zu tun hat.

Environment::iniSet('max_execution_time',0); 
Environment::iniSet('display_errors','1'); 
Environment::iniSet('display_startup_errors',1); 
Environment::iniSet('ignore_user_abort',1); 
Environment::iniSet('date.timezone','America/New_York'); 
Environment::iniSet('mime_magic.magicfile',1); 
Environment::iniSet('zend.ze1_compatibility_mode',0); 

Jede Hilfe wird geschätzt.

+1

Einige Objekte haben eine rekursive Abhängigkeit und können daher nicht angezeigt werden. – akond

Antwort

0

Ich denke, Sie sollten in Betracht ziehen, Ihre (Übersetzer) Dienste mit irgendeinem mvc-Ereignis anzuhängen. Also zum Beispiel; Sie möchten die Übersetzung in einem Controller oder während des Renderns ausführen, dann das Ereignis MvcEvent::EVENT_DISPATCH ('dispatch') oder das Ereignis 'MvcEvent::EVENT_RENDER (' render ') abrufen und den Übersetzer anhängen, wenn dieses Ereignis ausgelöst wird.

Sie können es wie folgt tun:

/** 
* @param EventInterface|MvcEvent $event 
*/ 
public function onBootstrap(EventInterface $event) 
{ 
    $application = $event->getApplication(); 
    $eventManager = $application->getEventManager(); 

    // Attach translator on dispatch Event 
    $eventManager->attach(MvcEvent::EVENT_DISPATCH, array($this, 'attachTranslator')); 
} 

/** 
* @param MvcEvent $event 
*/ 
public function attachTranslator(MvcEvent $event) 
{ 
    $application = $event->getApplication(); 
    $serviceManager = $application->getServiceManager(); 
    $translator  = $serviceManager->get('translator'); 
    //do something with your translator 
} 

Like this Sie sicherstellen, dass Sie den Übersetzer nur erhalten, wenn Sie es brauchen (beim Versand oder machen) und stellen Sie sicher, dass, bevor Sie es alle Das Bootstrapping der Anwendung wurde beendet ...

+0

Das ist großartig. Danke für die Information – slicks1

+0

Es hat nichts mit der Frage zu tun. Ich sagte nur, es war großartig, weil ich ein Neuling für ZF2 bin und das war eine tolle Sache. Meine Frage ist, warum ich das Translator-Objekt nicht debuggen kann – slicks1

+0

@ slicks1 Okay. Ich dachte, dass es dein Problem gelöst hat ... – Wilt

Verwandte Themen