如何在PageTitleProvider中访问TYPO3的 Request对象和frontend.page.information?
如何在继承自 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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。