/** * {@inheritdoc} */ public function fromUrl($url) { if (!is_string($url)) { $this->error = "The url parameter must be a string"; return $this; } $this->permalink = null; $this->internalUrl = null; $this->productionRoute = null; $defaultUrlTokens = $this->generateDefaultUrlTokens(); if (strpos($url, ':') === false && $url != '#') { // It's just the permalink if (strpos($url, $defaultUrlTokens) === false) { $permalink = $url; $internalUrl = $defaultUrlTokens . $permalink; } else { $permalink = str_replace($defaultUrlTokens, '', $url); $internalUrl = $url; } $seo = $this->seoRepository->fromPermalink($permalink); if (null !== $seo) { $this->permalink = $permalink; $this->internalUrl = $internalUrl; $this->productionRoute = $this->generateRoute($seo->getLanguage(), $seo->getPage()); } } return $this; }
/** * Overrides the base method to replace the permalink when it is used instad * of the page name * * @param Request $request */ protected function dispatchCurrentPageEvent(Request $request) { $pageName = $request->get('page'); $seo = $this->seoRepository->fromPermalink($pageName); if (null !== $seo) { $page = $this->pageRepository->fromPk($seo->getPageId()); $pageName = $page->getPageName(); } $eventName = sprintf('page_renderer.before_%s_rendering', $pageName); $this->dispatcher->dispatch($eventName, $this->event); }