public function dispatch(EventInterface $e) { $request = $e->getRequest(); $module = $request->getModuleName(); $controller = $request->getControllerName(); if (empty($module) || $module == 'default') { $module = 'application'; } if (empty($controller)) { $controller = 'index'; } $dirs = $this->getControllerDirectories(); if (!in_array($module, array_keys($dirs))) { $e->setState('error'); $e->addException(new InvalidModuleException()); return; } $dir = $dirs[$module]; $controllerSegment = $this->_normalizeClassName($controller) . 'Controller'; $classFile = $dir . '/' . str_replace('_', '/', $controllerSegment) . '.php'; $className = lcfirst($this->_normalizeClassName($module)) . '\\' . $controllerSegment; if (!file_exists($classFile)) { $e->setState('error'); $e->addException(new ControllerNotFoundException()); return; } include_once $classFile; if (!class_exists($className)) { $e->setState('error'); $e->addException(new ControllerNotFoundException()); return; } $controller = new $className(); if (!is_callable($controller)) { $e->setState('error'); $e->addException(new InvalidControllerException()); return; } try { $controller($e); } catch (\Exception $except) { $e->setState('error'); $e->addException($except); } return $e; }
public function __invoke(EventInterface $e) { if (isset($e['mvc.actioncontroller.broker'])) { $this->setHelperBroker($e['mvc.actioncontroller.broker']); } $request = $e->getRequest(); $action = $request->getActionName(); if (null === $action) { $action = 'index'; } $method = $this->_formatActionName($action); $response = $e->getResponse(); $context = $request->getControllerName() . '/' . $request->getActionName(); $response->assign(array(), $context); $this->{$method}($e); $values = $response->getValues(); }
public function route(EventInterface $e) { $request = $e->getRequest(); $this->getRouter()->route($request); }