如何在PageTitleProvider中访问TYPO3的 Request对象和frontend.page.information?

后端开发 2026-07-09

如何在继承自 AbstractPageTitleProvider 的Extbase扩展的PageTitleProviders中访问TYPO3请求对象?

我希望使用当前页面的页面信息和根线(rootline),分别通过 $GLOBALS['TSFE']->page$GLOBALS['TSFE']->rootLine 实现。但使用 $GLOBALS['TSFE'] 已被弃用。

在T3v13中,这应该通过请求对象的 frontend.page.information 属性实现。

  • T3文档中的示例 中,这个做法在实现 PageTitleProviderInterface 的WebsiteTitleProvider中使用。不过该示例返回一个错误 Cannot modify readonly property MyVendor\MySitepackage\PageTitle\WebsiteTitleProvider::$request
  • AbstractPageTitleProvider 已经有一个 $request 属性,但在我的PageTitleProvider中简单使用它就会返回错误 Typed property TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider::$request must not be accessed before initialization.,并且我也没有找到正确注入 Psr\Http\Message\ServerRequestInterface 的方法。

如何在我的PageTitleProviders中访问 frontend.page.information?它们通常像T3文档中的以下示例那样工作:

<?php

declare(strict_types=1);

namespace MyVendor\MySitepackage\PageTitle;

use TYPO3\CMS\Core\PageTitle\AbstractPageTitleProvider;

final class MyOwnPageTitleProvider extends AbstractPageTitleProvider
{
    public function setTitle(string $title): void
    {
        $this->title = $title;
    }
}

解决方案

由于你继承了 AbstractPageTitleProvider,你可以访问 $this->request 自TYPO3v13起

如需其他情况,请查阅 关于TYPO3请求对象的TYPO3文档,了解如何访问它的提示。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章