diff --git a/Documentation/ApiOverview/Seo/_ExampleWebsiteTitle/_WebsiteTitleProvider.php b/Documentation/ApiOverview/Seo/_ExampleWebsiteTitle/_WebsiteTitleProvider.php index bcb1d47ac9..17c0c8c2a7 100644 --- a/Documentation/ApiOverview/Seo/_ExampleWebsiteTitle/_WebsiteTitleProvider.php +++ b/Documentation/ApiOverview/Seo/_ExampleWebsiteTitle/_WebsiteTitleProvider.php @@ -13,26 +13,34 @@ #[Autoconfigure(public: true)] final readonly class WebsiteTitleProvider implements PageTitleProviderInterface { + private ServerRequestInterface $request; + public function __construct( private SiteFinder $siteFinder, ) {} public function getTitle(): string { - /** @var PageInformation $pageInformation */ - $pageInformation = $this->getRequest()->getAttribute('frontend.page.information'); - - $site = $this->siteFinder->getSiteByPageId($pageInformation->getId()); + $site = $this->siteFinder->getSiteByPageId($this->getPageInformation()->getId()); $titles = [ - $pageInformation->getPageRecord()['title'], + $this->getPageInformation()->getPageRecord()['title'] ?? '', $site->getAttribute('websiteTitle'), ]; return implode(' - ', $titles); } - private function getRequest(): ServerRequestInterface + public function setRequest(ServerRequestInterface $request): void + { + $this->request = $request; + } + + private function getPageInformation(): PageInformation { - return $GLOBALS['TYPO3_REQUEST']; + $pageInformation = $this->request->getAttribute('frontend.page.information'); + if (!$pageInformation instanceof PageInformation) { + throw new \Exception('Current frontend page information not available', 1730098625); + } + return $pageInformation; } }