siteMatcher->matchRequest($request); $site = $siteMatch->getSite(); $siteId = $site->getIdentifier(); $languageId = $siteMatch->getLanguage()?->getLanguageId(); if ($siteId === '' || $languageId === null || !($site instanceof Site)) { // Not a valid site. return null; } try { $route = $site->getRouter()->matchRequest($request, $siteMatch); } catch (RouteNotFoundException) { return null; } if ($route instanceof PageArguments && !$route->areDirty()) { return $route->getPageId(); } return null; } /** * Searches the page UID by the full URI and returns the page UID including its language. * * @return ?array{uid: int, languageUid: int, languageName: string} */ public function resolvePageUidAndLanguageBySiteUrl(string $fullUri): ?array { $request = new ServerRequest($fullUri); /** @var SiteRouteResult $siteMatch */ $siteMatch = $this->siteMatcher->matchRequest($request); $site = $siteMatch->getSite(); $siteId = $site->getIdentifier(); $languageId = $siteMatch->getLanguage()?->getLanguageId(); if ($siteId === '' || $languageId === null || !($site instanceof Site)) { // Not a valid site. return null; } try { $route = $site->getRouter()->matchRequest($request, $siteMatch); } catch (RouteNotFoundException) { return null; } if ($route instanceof PageArguments && !$route->areDirty()) { return [ 'uid' => $route->getPageId(), 'languageUid' => $languageId, 'languageName' => $site->getLanguageById($languageId)->getTitle(), ]; } return null; } }