/** * Sets up services on the bootstrap event. * * @internal * Creates the translation service and a ModuleRouteListener * * @param MvcEvent $e */ public function onBootstrap(MvcEvent $e) { // Register the TimezoneAwareDate type with DoctrineMongoODM // Use it in Annotions ( @Field(type="tz_date") ) if (!DoctrineType::hasType('tz_date')) { DoctrineType::addType('tz_date', '\\Core\\Repository\\DoctrineMongoODM\\Types\\TimezoneAwareDate'); } $sm = $e->getApplication()->getServiceManager(); $translator = $sm->get('translator'); // initialise translator! \Zend\Validator\AbstractValidator::setDefaultTranslator($translator); $eventManager = $e->getApplication()->getEventManager(); $sharedManager = $eventManager->getSharedManager(); # $LogListener = new LogListener(); # $LogListener->attach($eventManager); if (!\Zend\Console\Console::isConsole()) { $redirectCallback = function () use($e) { $routeMatch = $e->getRouteMatch(); $lang = $routeMatch ? $routeMatch->getParam('lang', 'en') : 'en'; $uri = $e->getRouter()->getBaseUrl() . '/' . $lang . '/error'; header('Location: ' . $uri); }; $errorHandlerListener = new ErrorHandlerListener($sm->get('ErrorLogger'), $redirectCallback); $errorHandlerListener->attach($eventManager); $languageRouteListener = new LanguageRouteListener(); $languageRouteListener->attach($eventManager); $ajaxRenderListener = new AjaxRenderListener(); $ajaxRenderListener->attach($eventManager); $enforceJsonResponseListener = new EnforceJsonResponseListener(); $enforceJsonResponseListener->attach($eventManager); $stringListener = new StringListener(); $stringListener->attach($eventManager); // $notificationlistener = $sm->get('Core/Listener/Notification'); $notificationlistener->attachShared($sharedManager); $notificationAjaxHandler = new NotificationAjaxHandler(); $eventManager->attach(MvcEvent::EVENT_DISPATCH, array($notificationAjaxHandler, 'injectView'), -20); $notificationlistener->attach(NotificationEvent::EVENT_NOTIFICATION_HTML, array($notificationAjaxHandler, 'render'), -20); } $persistenceListener = new PersistenceListener(); $persistenceListener->attach($eventManager); $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function ($event) { $application = $event->getApplication(); if ($application::ERROR_EXCEPTION == $event->getError()) { $ex = $event->getParam('exception'); if (404 == $ex->getCode()) { $event->setError($application::ERROR_CONTROLLER_NOT_FOUND); } } }, 500); $eventManager->attach(MvcEvent::EVENT_DISPATCH, function ($event) use($eventManager) { $eventManager->trigger('postDispatch', $event); }, -150); }
public function detectLanguage(MvcEvent $e) { return parent::detectLanguage($e); }