public function onSiteAccessMatch(PostSiteAccessMatchEvent $event) { $request = $event->getRequest(); $siteAccess = $event->getSiteAccess(); // Injecting matched SiteAccess in the ServiceContainer. // All services depending on it will be "synchronized" with it. $this->container->set('ezpublish.siteaccess', $siteAccess); // We already have semanticPathinfo (sub-request) if ($request->attributes->has('semanticPathinfo')) { $vpString = $request->attributes->get('viewParametersString'); if (!empty($vpString)) { $request->attributes->set('viewParameters', $this->generateViewParametersArray($vpString)); } else { $request->attributes->set('viewParametersString', ''); $request->attributes->set('viewParameters', array()); } return; } // Analyse the pathinfo if needed since it might contain the siteaccess (i.e. like in URI mode) $pathinfo = $request->getPathInfo(); if ($siteAccess->matcher instanceof URILexer) { $semanticPathinfo = $siteAccess->matcher->analyseURI($pathinfo); } else { $semanticPathinfo = $pathinfo; } // Get view parameters and cleaned up pathinfo (without view parameters string) list($semanticPathinfo, $viewParameters, $viewParametersString) = $this->getViewParameters($semanticPathinfo); // Storing the modified pathinfo in 'semanticPathinfo' request attribute, to keep a trace of it. // Routers implementing RequestMatcherInterface should thus use this attribute instead of the original pathinfo $request->attributes->set('semanticPathinfo', $semanticPathinfo); $request->attributes->set('viewParameters', $viewParameters); $request->attributes->set('viewParametersString', $viewParametersString); }
public function onSiteAccessMatch(PostSiteAccessMatchEvent $event) { if (!($event->getRequestType() === HttpKernelInterface::MASTER_REQUEST && isset($this->session) && !$this->session->isStarted() && $this->sessionStorage instanceof NativeSessionStorage)) { return; } $sessionOptions = (array) $this->configResolver->getParameter('session'); $sessionName = isset($sessionOptions['name']) ? $sessionOptions['name'] : $this->session->getName(); $sessionOptions['name'] = $this->getSessionName($sessionName, $event->getSiteAccess()); $this->sessionStorage->setOptions($sessionOptions); }