getRouteMatch() public method

Get route match
public getRouteMatch ( ) : null | Zend\Router\RouteMatch
return null | Zend\Router\RouteMatch
Esempio n. 1
7
 public function __invoke(MvcEvent $event)
 {
     if ($event->getRouteMatch()->getMatchedRouteName() === 'oauth/authorize' || $event->getRouteMatch()->getMatchedRouteName() === 'oauth/code') {
         $auth = $this->authentication;
         if (!$auth->hasIdentity()) {
             //redirect to login form before granting permissions - exception would be client_credentials grant type
             $url = $event->getRouter()->assemble([], array('name' => 'dotuser/login'));
             $host = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'on' ? 'https://' : 'http://';
             $host .= $_SERVER['HTTP_HOST'];
             $url = $host . $url . '?redirect=' . urlencode($event->getRequest()->getUriString());
             $response = $event->getResponse();
             $response->getHeaders()->addHeaderLine('Location', $url);
             $response->setStatusCode(302);
             $response->sendHeaders();
             exit;
         } else {
             $identity = $auth->getIdentity();
             $request = $event->getRequest();
             $client_id = $request->getQuery('client_id');
             //check to see if user already ganted permissions and is not revoked to skip the step and redirecting directly
             if ($event->getRouteMatch()->getMatchedRouteName() === 'oauth/authorize') {
                 if ($this->userRevokeStorage->isAuthorized($client_id, $identity->getUsername())) {
                     $newRequest = new \ZF\ContentNegotiation\Request();
                     $newRequest->setMethod(\Zend\Http\Request::METHOD_POST);
                     $newRequest->getPost()->set('authorized', 'yes');
                     $event->setRequest($newRequest);
                 }
             }
         }
     }
 }
 /**
  * @param $controllerName
  * @param $action
  * @param array $params
  * @return string|\Zend\Stdlib\ResponseInterface
  * @throws \Exception
  */
 public function runControllerAction($controllerName, $action, $params = array())
 {
     $this->event->getRouteMatch()->setParam('controller', $controllerName)->setParam('action', $action);
     foreach ($params as $key => $value) {
         $this->event->getRouteMatch()->setParam($key, $value);
     }
     $serviceManager = $this->event->getApplication()->getServiceManager();
     $controllerManager = $serviceManager->get('ControllerLoader');
     /** @var AbstractActionController $controller */
     $controller = $controllerManager->get($controllerName);
     $controller->setEvent($this->event);
     $result = $controller->dispatch($this->event->getRequest());
     if ($result instanceof Response) {
         return $result;
     }
     /** @var ViewManager $viewManager */
     $viewManager = $serviceManager->get('ViewManager');
     $renderingStrategy = $viewManager->getMvcRenderingStrategy();
     $this->event->setViewModel($result);
     /** @var ViewModel $result */
     if (!$result->terminate()) {
         $layout = new ViewModel();
         $layoutTemplate = $renderingStrategy->getLayoutTemplate();
         $layout->setTemplate($layoutTemplate);
         $layout->addChild($result);
         $this->event->setViewModel($layout);
     }
     $response = $renderingStrategy->render($this->event);
     return $response;
 }
Esempio n. 3
0
 function boforeDispatch(MvcEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $target = $event->getTarget();
     /* Offline pages not needed authentication */
     $whiteList = array('Auth\\Controller\\Auth-login', 'Auth\\Controller\\Auth-logout', 'Auth\\Controller\\Auth-signup');
     $requestUri = $request->getRequestUri();
     $controller = $event->getRouteMatch()->getParam('controller');
     $action = $event->getRouteMatch()->getParam('action');
     $requestedResourse = $controller . "-" . $action;
     $session = new Container('User');
     if ($session->offsetExists('email')) {
         if (in_array($requestedResourse, $whiteList)) {
             $url = '/TPWeb/public/produit';
             $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
             $response->setStatusCode(302);
         }
     } else {
         if (!in_array($requestedResourse, $whiteList)) {
             $url = '/TPWeb/public/auth';
             $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
             $response->setStatusCode(302);
         }
         $response->sendHeaders();
     }
     //print "Called before any controller action called. Do any operation.";
 }
Esempio n. 4
0
 public function __invoke(MvcEvent $e)
 {
     $response = $e->getResponse();
     $this->rateLimitService->consume($e->getRouteMatch(), $e->getRequest());
     //var_dump($this->rateLimitService->getTopMeters('daily_limits'));exit;
     $status = $this->rateLimitService->getLimitStatus($e->getRouteMatch(), $e->getRequest(), 'daily_limits');
     if (!empty($status)) {
         //add info headers
         $headers = $response->getHeaders();
         $headers->addHeaderLine('X-RateLimit-Limit', $status['limit']);
         $headers->addHeaderLine('X-RateLimit-Remaining', $status['remaining']);
         $headers->addHeaderLine('X-RateLimit-Reset', $status['reset']);
         $response->setHeaders($headers);
     }
     if ($this->rateLimitService->isLimitExceeded()) {
         //trigger the ratelimit exceeded event
         $mvcLimitEvent = $this->mvcLimitEvent;
         $response = $this->eventManager->trigger(MvcLimitEvent::EVENT_RATELIMIT_EXCEEDED, $mvcLimitEvent, function ($r) {
             return $r instanceof Response;
         });
         $response = $response->last();
         return $response;
     } elseif ($this->rateLimitService->isLimitWarning()) {
         //trigger the ratelimit warning event
         $mvcLimitEvent = $this->mvcLimitEvent;
         $response = $this->eventManager->trigger(MvcLimitEvent::EVENT_RATELIMIT_WARN, $mvcLimitEvent, function ($r) {
             return $r instanceof Response;
         });
         $response = $response->last();
         $e->setResponse($response);
     }
 }
Esempio n. 5
0
 public function checkAcl(MvcEvent $e)
 {
     $userRole = 'guest';
     $app = $e->getTarget();
     $serviceManager = $app->getServiceManager();
     $authService = $serviceManager->get('AuthService');
     if ($authService->hasIdentity()) {
         $user = $authService->getStorage()->read();
         $userRole = $user->role;
     }
     $controller = $e->getRouteMatch()->getMatchedRouteName('controller');
     $action = $e->getRouteMatch()->getParam('action');
     $route = $controller . '/' . $action;
     $allAccess = false;
     if ($e->getViewModel()->acl->hasResource($controller . '/all')) {
         if ($e->getViewModel()->acl->isAllowed($userRole, $controller . '/all')) {
             $allAccess = true;
         }
     }
     if (!$allAccess) {
         if ($e->getViewModel()->acl->hasResource($route)) {
             if (!$e->getViewModel()->acl->isAllowed($userRole, $route)) {
                 $e->getRouteMatch()->setParam('controller', 'Frontend\\Controller\\Index')->setParam('action', 'index');
             }
         } else {
             $e->getRouteMatch()->setParam('controller', 'Frontend\\Controller\\Index')->setParam('action', 'index');
         }
     }
 }
Esempio n. 6
0
 public function getActionName(MvcEvent $event)
 {
     if (!$event->getRouteMatch()) {
         return '[unknownAction]';
     }
     return $event->getRouteMatch()->getParam('action');
 }
Esempio n. 7
0
 /**
  * @param mixed $param
  * @param mixed $default
  * @return array|mixed|null
  */
 public function fromRoute($param = null, $default = null)
 {
     if ($param === null) {
         return $this->event->getRouteMatch()->getParams();
     }
     return $this->event->getRouteMatch()->getParam($param, $default);
 }
Esempio n. 8
0
 /**
  * 路由分发后才能获取controller和action名称
  * @param MvcEvent $e
  */
 public function dispatchHandle(MvcEvent $e)
 {
     //$serviceManager = $e->getApplication()->getServiceManager();
     $viewModel = $e->getApplication()->getMvcEvent()->getViewModel();
     $viewModel->controller = $e->getRouteMatch()->getParam("__CONTROLLER__");
     $viewModel->action = $e->getRouteMatch()->getParam('action');
 }
Esempio n. 9
0
 function boforeDispatch(MvcEvent $event)
 {
     include 'config/constant.php';
     $response = $event->getResponse();
     $controller = $event->getRouteMatch()->getParam('controller');
     $module_array = explode("\\", $controller);
     if ($module_array[0] == 'Admin') {
         $action = $event->getRouteMatch()->getParam('action');
         $requestedResourse = $controller . "\\" . $action;
         $session = new Container('User');
         if ($session->offsetExists('user')) {
             if (in_array($requestedResourse, $GLOBALS['PAGE_BEFORE_LOGIN'])) {
                 $url = $GLOBALS['SITE_ADMIN_URL'] . 'dashboard/add';
                 $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
                 $response->setStatusCode(302);
             }
         } else {
             if ($requestedResourse != 'Admin\\Controller\\Index\\index' && !in_array($requestedResourse, $GLOBALS['PAGE_BEFORE_LOGIN'])) {
                 $url = $GLOBALS['SITE_ADMIN_URL'] . 'index/login';
                 $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
                 $response->setStatusCode(302);
             }
             $response->sendHeaders();
         }
     }
 }
Esempio n. 10
0
 /**
  * Before Dispatch Function
  *
  * @param MvcEvent $event            
  */
 function boforeDispatch(MvcEvent $event)
 {
     $sm = $event->getApplication()->getServiceManager();
     $config = $sm->get('Config');
     $list = $config['whitelist'];
     $name = $sm->get('request')->getUri()->getPath();
     $controller = $event->getRouteMatch()->getParam('controller');
     $action = $event->getRouteMatch()->getParam('action');
     $session = new Container('User');
     $controller = $event->getRouteMatch()->getParam('controller');
     $action = $event->getRouteMatch()->getParam('action');
     if (!(strpos($name, 'reset-password') || in_array($name, $list)) && $session->offsetExists('userId')) {
         $serviceManager = $event->getApplication()->getServiceManager();
         $roleTable = $serviceManager->get('RoleTable');
         $userRoleTable = $serviceManager->get('UserRoleTable');
         $roleID = $userRoleTable->getUserRoles('user_id = ' . $session->offsetGet('userId'), array('role_id'));
         $roleName = $roleTable->getUserRoles('rid = ' . $roleID[0]['role_id'], array('role_name'));
         $userRole = $roleName[0]['role_name'];
         $acl = $serviceManager->get('Acl');
         $acl->initAcl();
         $status = $acl->isAccessAllowed($userRole, $controller, $action);
         if (!$status) {
             die('Permission denied');
         }
     }
 }
Esempio n. 11
0
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $routeCallback = function ($e) {
         $availableLanguages = array('en-US', 'zh-CN');
         $defaultLanguage = 'en-US';
         $language = "";
         $fromRoute = false;
         //see if language could be find in url
         if ($e->getRouteMatch()->getParam('lang')) {
             $language = $e->getRouteMatch()->getParam('lang');
             $fromRoute = true;
             //or use language from http accept
         } else {
             $headers = $e->getApplication()->getRequest()->getHeaders();
             if ($headers->has('Accept-Language')) {
                 $headerLocale = $headers->get('Accept-Language')->getPrioritized();
                 $language = substr($headerLocale[0]->getLanguage(), 0, 2);
             }
         }
         if (!in_array($language, $availableLanguages)) {
             $language = $defaultLanguage;
         }
         $e->getApplication()->getServiceManager()->get('translator')->setLocale($language);
     };
     $eventManager->getSharedManager()->attach(__NAMESPACE__, 'dispatch', function ($e) {
         $e->getTarget()->layout('layout/admin');
     });
     $eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_ROUTE, $routeCallback);
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
 }
Esempio n. 12
0
 public function injectXmlTemplate(MvcEvent $e)
 {
     $format = $e->getRouteMatch()->getParam('format', "html");
     $channel = $e->getRouteMatch()->getParam('channel', "default");
     if ('xml' == $format) {
         $viewModel = $e->getResult();
         if ($viewModel instanceof JsonModel) {
             return;
         }
         $resolver = $e->getApplication()->getServiceManager()->get('ViewResolver');
         $templateDefault = $viewModel->getTemplate() . '.xml.phtml';
         $templateChannel = $viewModel->getTemplate() . '.' . $channel . '.xml.phtml';
         if ($channel != 'default' && $resolver->resolve($templateChannel)) {
             $viewModel->setTemplate($templateChannel);
         } elseif ($resolver->resolve($templateDefault)) {
             $viewModel->setTemplate($templateDefault);
         } else {
         }
         /*
          * Disable layout. This works because InjectViewModelListener is executed after us.
          */
         $viewModel->setTerminal(true);
         /* @var Response $response */
         $response = $e->getResponse();
         $response->getHeaders()->addHeaderLine('Content-Type', 'application/xml');
     }
 }
Esempio n. 13
0
 function boforeDispatch(MvcEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $target = $event->getTarget();
     $whiteList = array('Auth\\Controller\\Index-index', 'Auth\\Controller\\Index-logout');
     $requestUri = $request->getRequestUri();
     $controller = $event->getRouteMatch()->getParam('controller');
     $action = $event->getRouteMatch()->getParam('action');
     $requestedResourse = $controller . "-" . $action;
     $session = new Container('User');
     if ($session->offsetExists('email')) {
         if ($requestedResourse == 'Auth\\Controller\\Index-index' || in_array($requestedResourse, $whiteList)) {
             $url = '/';
             $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
             $response->setStatusCode(302);
         } else {
             $serviceManager = $event->getApplication()->getServiceManager();
             $userRole = $session->offsetGet('roleName');
             $acl = $serviceManager->get('Acl');
             $acl->initAcl();
             $status = $acl->isAccessAllowed($userRole, $controller, $action);
             if (!$status) {
                 die('Permission denied');
             }
         }
     } else {
         if ($requestedResourse != 'Auth\\Controller\\Index-index' && !in_array($requestedResourse, $whiteList)) {
             $url = '/login';
             $response->setHeaders($response->getHeaders()->addHeaderLine('Location', $url));
             $response->setStatusCode(302);
         }
         $response->sendHeaders();
     }
 }
 /**
  * @param MvcEvent $evt
  * @return string[]
  */
 private function getSerializationGroups(MvcEvent $evt)
 {
     /** @var ZendRest $zendRestOptions */
     $zendRestOptions = $evt->getApplication()->getServiceManager()->get('Aeris\\ZendRestModule\\Options\\ZendRest');
     $controllerName = $evt->getRouteMatch()->getParam('controller');
     $actionName = $evt->getRouteMatch()->getParam('action');
     return $zendRestOptions->getController($controllerName)->getSerializationGroup($actionName);
 }
Esempio n. 15
0
 /**
  * Download link.
  *
  * @param string $compress        'zip' | 'bz2' | other to make option
  * @param string $moduleNamespace
  *
  * @return string
  */
 public function __invoke($compress = 'zip', $moduleNamespace = '')
 {
     if ($moduleNamespace === '') {
         $controller = $this->mvcEvent->getRouteMatch()->getParam('controller');
         $moduleNamespace = substr($controller, 0, strpos($controller, '\\'));
     }
     return $this->view->url('download', ['module' => $moduleNamespace, 'compress' => $compress]);
 }
Esempio n. 16
0
 public function onDispatch(MvcEvent $e)
 {
     //Verificamos si no existe una sesion creada
     if (!SessionManager::sessionExist()) {
         $e->getRouteMatch()->setParam('controller', 'Auth\\Controller\\Auth');
         $e->getRouteMatch()->setParam('action', 'login');
     }
 }
 /**
  * 
  * @param MvcEvent $event
  */
 public function onGuard(MvcEvent $event)
 {
     $controllerName = $event->getRouteMatch()->getParam('controller');
     $actionName = $event->getRouteMatch()->getParam('action');
     if ($this->guard->isGranted(array('controller' => $controllerName, 'action' => $actionName))) {
         return;
     }
     $this->triggerForbiddenEvent($event);
 }
Esempio n. 18
0
 /**
  * Event listener to run before page cache, so some operation will also work
  * if the page is cached.
  * If this code is added in action, it will be ignored if page is cached.
  * 
  * @param MvcEvent $e 
  */
 public function runBeforePageCache(MvcEvent $e)
 {
     $name = $e->getRouteMatch()->getParam('id');
     if (empty($name)) {
         $name = $e->getRouteMatch()->getParam('slug');
     }
     $module = $e->getRouteMatch()->getParam('module');
     self::addVisit($name, $module);
 }
Esempio n. 19
0
 protected function getRouteMatch(MvcEvent $event)
 {
     $routeMatch = $event->getRouteMatch();
     if (!$routeMatch) {
         $routeMatch = new RouteMatch(array('home'));
         $event->setRouteMatch($routeMatch);
         $routeMatch = $event->getRouteMatch();
     }
     return $routeMatch;
 }
Esempio n. 20
0
File: Module.php Progetto: zfury/cmf
 /**
  * @param MvcEvent $e
  * @return Response
  */
 public function preDispatch(MvcEvent $e)
 {
     if (!$e->getRouteMatch()->getParam('module') || $e->getRouteMatch()->getParam('module') !== 'install') {
         $session = new Container('progress_tracker');
         $action = Install::getCurrentStep();
         $response = new Response();
         $response->setStatusCode(302);
         $response->getHeaders()->addHeaderLine('Location', "/install/index/{$action}");
         return $response;
     }
 }
 public function onDispatch(MvcEvent $e)
 {
     $logged_block = array('login', 'register');
     if (!$this->identity() && !in_array($e->getRouteMatch()->getParam("action"), $logged_block)) {
         return $this->redirect()->toRoute('home');
     }
     if ($this->identity() && in_array($e->getRouteMatch()->getParam("action"), $logged_block)) {
         return $this->redirect()->toRoute('home');
     }
     return parent::onDispatch($e);
 }
Esempio n. 22
0
 private function dispatchEvent(MvcEvent $e)
 {
     // TARGET & SERVICEMANAGER
     $target = $e->getTarget();
     $serviceManager = $e->getApplication()->getServiceManager();
     // CONFIG
     $config = $e->getApplication()->getServiceManager()->get('config');
     // TRANSLATOR
     /** @var Translator $translator */
     $translator = $serviceManager->get('MvcTranslator');
     // LANG CONFIG
     $languages = $config['languages']['available'];
     $fallbackLocale = $config['languages']['fallback'];
     // ROUTER PARAM LOCALE
     $routeMatch = $e->getRouteMatch();
     if ($routeMatch) {
         $urlLocale = $routeMatch->getParam('locale');
     } else {
         /**
          * @todo
          * evtl hier noch aus der request url versuchen die locale zu lesen
          */
         $urlLocale = $fallbackLocale;
     }
     if (strstr($_SERVER['SERVER_NAME'], '.de')) {
         $urlLocale = 'de';
     } else {
         $urlLocale = 'en';
     }
     // ROUTER
     /** @var \Zend\Mvc\Router\Http\TreeRouteStack $router */
     $router = $e->getRouter();
     // check if language is present
     $usedLocale = isset($languages[$urlLocale]) ? $languages[$urlLocale] : false;
     $usedLocaleShort = isset($languages[$urlLocale]) ? $urlLocale : false;
     // language not found redirect to fallback lang
     if (!$usedLocale && !$usedLocaleShort) {
         // wrong locale request
         $e->getRouteMatch()->setParam('locale', $fallbackLocale);
         $url = $e->getRouter()->assemble($e->getRouteMatch()->getParams(), array('name' => $e->getRouteMatch()->getMatchedRouteName()));
         $response = $e->getResponse();
         $response->getHeaders()->addHeaderLine('Location', $url);
         $response->setStatusCode(302);
         $response->sendHeaders();
         return $response;
     }
     // add current locale as default router param
     $router->setDefaultParam('locale', $usedLocaleShort);
     $translator->setLocale($usedLocale);
     $translator->setFallbackLocale($usedLocale);
     $translator->addTranslationFile('phpArray', 'vendor/zendframework/zendframework/resources/languages/' . $usedLocaleShort . '/Zend_Validate.php', 'default', $usedLocale);
     \Locale::setDefault($usedLocale);
     AbstractValidator::setDefaultTranslator($translator);
 }
Esempio n. 23
0
 public function onBootstrap(MvcEvent $e)
 {
     $e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH, function ($e) {
         $container = new Container('User');
         if ($container->id == null && $e->getRouteMatch()->getMatchedRouteName() != 'login' && $e->getRouteMatch()->getMatchedRouteName() != 'register') {
             header('Location: /login');
             die;
         }
     });
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
 }
 public function onDispatch(MvcEvent $event)
 {
     $routeMatch = $event->getRouteMatch();
     $params = $event->getRouteMatch()->getParams();
     unset($params['controller']);
     unset($params['action']);
     $strParams = [];
     foreach ($params as $name => $value) {
         $strParams[] = sprintf('%s = "%s", ', $name, $value);
     }
     $strParams = join($strParams);
     $message = sprintf('%s: dispatch target: "%s:%s": with params: [%s]', __FUNCTION__, $routeMatch->getParam('controller'), $routeMatch->getParam('action'), $strParams);
     $this->getEventManager()->trigger(new LogEvent($this, $message, Logger::INFO));
 }
Esempio n. 25
0
 public static function checkPermission(MvcEvent $e)
 {
     $auth = $e->getApplication()->getServiceManager()->get('Zend\\Authentication\\AuthenticationService');
     list($module) = explode('\\', $e->getRouteMatch()->getParam('controller'));
     $isLogin = $e->getRouteMatch()->getMatchedRouteName() === 'login' || $e->getRouteMatch()->getMatchedRouteName() === 'authenticate';
     if ($module != 'Scaffolding' && !$auth->hasIdentity() && !$isLogin) {
         $url = $e->getRouter()->assemble([], ['name' => 'login']);
         $response = $e->getResponse();
         $response->getHeaders()->addHeaderLine('Location', $url);
         $response->setStatusCode(302);
         $response->sendHeaders();
         return $response;
     }
 }
Esempio n. 26
0
 /**
  * Handle layout titles onDispatch.
  *
  * @param MvcEvent $event
  */
 public function setTitleAndTranslation(MvcEvent $event)
 {
     $route = $event->getRouteMatch();
     $title = $this->service->get('ControllerPluginManager')->get('systemsettings');
     $viewHelper = $this->service->get('ViewHelperManager');
     $lang = new Container('translations');
     $translator = $this->service->get('translator');
     /*
      * Load translations.
      */
     $renderer = $this->service->get('ViewManager')->getRenderer();
     $renderer->plugin('formRow')->setTranslator($translator, 'SD_Translations');
     $renderer->plugin('formCollection')->setTranslator($translator, 'SD_Translations');
     $renderer->plugin('formLabel')->setTranslator($translator, 'SD_Translations');
     $renderer->plugin('formSelect')->setTranslator($translator, 'SD_Translations');
     $renderer->plugin('formSubmit')->setTranslator($translator, 'SD_Translations');
     AbstractValidator::setDefaultTranslator($translator, 'formandtitle');
     $translator->setLocale($lang->offsetGet('languageName'))->setFallbackLocale('en');
     $viewModel = $event->getViewModel();
     $viewModel->setVariable('lang', $translator->getLocale());
     /*
      * Custom flash messenger.
      */
     $msg = $lang->offsetGet('flashMessages');
     $viewModel->setVariable('flashMessages', $msg);
     /*
      * Load page title
      */
     $action = $route->getParam('post') ? ' - ' . $route->getParam('post') : ucfirst($route->getParam('__CONTROLLER__'));
     $headTitleHelper = $viewHelper->get('headTitle');
     $headTitleHelper->append($title->__invoke('general', 'site_name') . ' ' . $action);
 }
 /**
  * Test if the content-type received is allowable.
  *
  * @param  MvcEvent $e
  * @return null|ApiProblemResponse
  */
 public function onRoute(MvcEvent $e)
 {
     if (empty($this->config)) {
         return;
     }
     $controllerName = $e->getRouteMatch()->getParam('controller');
     if (!isset($this->config[$controllerName])) {
         return;
     }
     // Only worry about content types on HTTP methods that submit content
     // via the request body.
     $request = $e->getRequest();
     if (!method_exists($request, 'getHeaders')) {
         // Not an HTTP request; nothing to do
         return;
     }
     $requestBody = (string) $request->getContent();
     if (empty($requestBody)) {
         return;
     }
     $headers = $request->getHeaders();
     if (!$headers->has('content-type')) {
         return new ApiProblemResponse(new ApiProblem(415, 'Invalid content-type specified'));
     }
     $contentTypeHeader = $headers->get('content-type');
     $matched = $contentTypeHeader->match($this->config[$controllerName]);
     if (false === $matched) {
         return new ApiProblemResponse(new ApiProblem(415, 'Invalid content-type specified'));
     }
 }
Esempio n. 28
0
 public function setTemplate(MvcEvent $e)
 {
     $result = $e->getResult();
     $router = $e->getRouteMatch();
     $params = $router->getParams();
     if (isset($params['__NAMESPACE__']) && isset($params['__CONTROLLER__']) && isset($params['action'])) {
         $controllerClass = $params['__NAMESPACE__'];
         $moduleNamespace = substr($controllerClass, strpos($controllerClass, '\\'));
         $moduleNamespace = substr($moduleNamespace, 1);
         $moduleNamespace = substr($moduleNamespace, 0, strpos($moduleNamespace, '\\Controller'));
         $templatePath = __DIR__;
         $config = $e->getApplication()->getServiceManager()->get('config');
         if (isset($config['view_manager']['template_map'])) {
             $moduleNamespace = strtolower($moduleNamespace . '/' . $params['__CONTROLLER__']);
             $templatePath = $templatePath . '/view/' . $moduleNamespace . '/' . $params['action'] . '.phtml';
             $moduleNamespace = str_replace('\\', '/', $moduleNamespace);
             $template = $moduleNamespace . '/' . $params['action'];
             $config['view_manager']['template_map'][$template] = $templatePath;
             $result->setTemplate($template);
         }
         //set Title;
         if (isset($config['view_manager']['siteName'])) {
             $siteName = $config['view_manager']['siteName'];
         } else {
             $siteName = $moduleNamespace;
         }
         $viewHelperManager = $e->getApplication()->getServiceManager()->get('viewHelperManager');
         $headTitle = $viewHelperManager->get('headTitle');
         $headTitle->setSeparator(' - ');
         $headTitle->append($params['action']);
         $headTitle->append($siteName);
     }
 }
Esempio n. 29
0
 public function onBootstrap(MvcEvent $e)
 {
     // You may not need to do this if you're doing it elsewhere in your
     // application
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     //                      $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) {
     //             $result = $e->getResult();
     //             $result->setTerminal(TRUE);
     //
     //            });
     $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'onDispatchError'), 100);
     //           $eventManager->attach('dispatch', array($this,'onDispatchError'), 100);
     $e->getApplication()->getEventManager()->getSharedManager()->attach('Zend\\Mvc\\Controller\\AbstractActionController', 'dispatch', function ($e) {
         $controller = $e->getTarget();
         $controllerClass = get_class($controller);
         $moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\\'));
         $config = $e->getApplication()->getServiceManager()->get('config');
         $routeMatch = $e->getRouteMatch();
         $actionName = strtolower($routeMatch->getParam('action', 'not-found'));
         // get the action name
         if (isset($config['module_layouts'][$moduleNamespace][$actionName])) {
             $controller->layout($config['module_layouts'][$moduleNamespace][$actionName]);
         } elseif (isset($config['module_layouts'][$moduleNamespace]['default'])) {
             $controller->layout($config['module_layouts'][$moduleNamespace]['default']);
         }
     }, 100);
 }
 /**
  * @param \Zend\Mvc\MvcEvent $object
  * @param array $options
  *
  * @return array
  */
 public function format($object, array $options)
 {
     $data['route']['name'] = $object->getRouteMatch()->getMatchedRouteName();
     $data['route']['params'] = $object->getRouteMatch()->getParams();
     $parts = explode('/', $data['route']['name']);
     $route = $object->getRouter();
     $config = $object->getApplication()->getServiceManager()->get('config');
     $config = isset($config['router']['routes']) ? $config['router']['routes'] : [];
     while ($part = array_shift($parts)) {
         $route->hasRoute($part) and $route = $route->getRoute($part);
         isset($config[$part]) and $config = $config[$part];
     }
     $data['route']['class'] = get_class($route);
     $data['route']['assembled'] = $route->getAssembledParams();
     $data['event']['error'] = $object->getError();
     $data['event']['name'] = $object->getName();
     $controllers = [];
     $definitions = [];
     $title = '404 Error';
     $subtitle = 'Unknown Error';
     $context = null;
     $manager = $object->getApplication()->getServiceManager()->get('ControllerLoader');
     switch ($object->getError()) {
         case Application::ERROR_CONTROLLER_NOT_FOUND:
             $definitions = $config;
             $title = $object->getControllerClass();
             $subtitle = 'The requested controller cannot be found';
             $controllers = $manager->getCanonicalNames();
             array_pop($controllers);
             // because the Sm add the wrong into the list
             break;
         case Application::ERROR_CONTROLLER_INVALID:
             $title = $object->getControllerClass();
             $subtitle = $object->getParam('exception')->getMessage();
             break;
         case Application::ERROR_CONTROLLER_CANNOT_DISPATCH:
             $context = $this->getControllerContext($manager, $data['route']['params']);
             $subtitle = 'The controller cannot dispatch the request';
             $title = $data['route']['params']['controller'];
             break;
     }
     $data['title'] = $title;
     $data['subtitle'] = $subtitle;
     $data['route']['definition'] = $definitions;
     $data['controller']['names'] = $controllers;
     $data['controller']['context'] = $context;
     return $data;
 }