/** * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $format = null; if (is_string($this->forceFormat)) { $format = $this->forceFormat; } else { $request = $event->getRequest(); if ($this->router instanceof I18nRouter) { $collection = $this->router->getOriginalRouteCollection(); } else { $collection = $this->router->getRouteCollection(); } $route = $collection->get($request->get('_route')); if (!empty($route)) { $defaultFormat = is_null($route->getDefault('_format')) ? 'html' : $route->getDefault('_format'); } else { $defaultFormat = 'html'; } $format = !is_null($request->attributes->get('_format')) ? $request->attributes->get('_format') : $defaultFormat; } if (!is_null($format)) { $serviceName = 'vsymfo_core.service.' . strtolower($format) . '_document'; if ($this->container->has($serviceName) && $this->container->get($serviceName) instanceof DocumentFactoryInterface) { $service = $this->container->get($serviceName); } else { $service = $this->container->get('vsymfo_core.service.txt_document'); } $doc = $service->createDocument(); $this->container->get('vsymfo_core.service.document')->setDefaultsToDocument($doc); $this->container->set($this->serviceName, $doc); } }
/** * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if ($this->router instanceof I18nRouter) { $collection = $this->router->getOriginalRouteCollection(); } else { $collection = $this->router->getRouteCollection(); } $route = $collection->get($request->get('_route')); if (!empty($route) && $route->hasOption('theme_group')) { $group = $route->getOption('theme_group'); $this->theme->setName($group . '_' . $this->container->getParameter('vsymfo_core.theme_' . $group)); } }
/** * @param string $route * @param \SimpleXMLElement $params * @param boolean $hidden * @param array $options */ protected function addRouteParameters($route, \SimpleXMLElement $params, $hidden, array &$options) { $options['routeParameters'] = []; $parameters = $params->xpath('param'); if (!empty($parameters)) { foreach ($parameters as $param) { if (isset($param['name'])) { $options['routeParameters'][(string) $param['name']] = (string) $param; } } } if ($hidden) { if ($this->router instanceof I18nRouter) { $collection = $this->router->getOriginalRouteCollection(); } else { $collection = $this->router->getRouteCollection(); } $route = $collection->get($route); $variables = []; preg_match_all('#\\{\\w+\\}#', $route->getPath(), $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); foreach ($matches as $match) { $variables[] = substr($match[0][0], 1, -1); } if (!empty($variables)) { $defaults = $route->getDefaults(); foreach ($variables as $variable) { if (!isset($options['routeParameters'][$variable]) && !isset($defaults[$variable])) { $value = $this->request->getCurrentRequest()->attributes->get($variable, '0'); $options['routeParameters'][$variable] = empty($value) ? '0' : $value; } } } } }