You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 10中已弃用ErrorpageMessage类的替代落地方案咨询

TYPO3 10适配tt_board弃用ErrorpageMessage的解决方案

核心结论

不存在额外需要调用的TYPO3对象,ErrorPageController::errorAction返回的HTML内容可以直接输出,也可以封装为PSR-7响应对象返回,适配不同场景需求。

方案1:最简适配原有输出逻辑

直接输出ErrorPageController返回的HTML内容即可,完全兼容原有output()方法的效果:

use TYPO3\CMS\Core\Controller\ErrorPageController;
use TYPO3\CMS\Core\Utility\GeneralUtility;

...
$message = $languageObj->getLabel('error_no_permission');
$title = $languageObj->getLabel('error_access_denied');
$content = GeneralUtility::makeInstance(ErrorPageController::class)->errorAction(
    $title,
    $message
);
// 替换原有$messagePage->output()逻辑
echo $content;
exit;

方案2:符合TYPO3 PSR-7规范的输出方案

如果是在控制器上下文触发错误,更推荐返回标准响应对象,适配TYPO3 10的中间件架构:

use TYPO3\CMS\Core\Controller\ErrorPageController;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Http\HtmlResponse;

...
$message = $languageObj->getLabel('error_no_permission');
$title = $languageObj->getLabel('error_access_denied');
$content = GeneralUtility::makeInstance(ErrorPageController::class)->errorAction(
    $title,
    $message
);
// 返回响应对象后由TYPO3内核处理输出,403为权限拒绝对应状态码,可按需调整
return new HtmlResponse($content, 403);

异常场景弹窗输出方案

如果是需要在异常触发的对话框中展示内容,可直接使用TYPO3核心的FlashMessage服务实现:

use TYPO3\CMS\Core\Messaging\FlashMessage;
use TYPO3\CMS\Core\Messaging\FlashMessageService;
use TYPO3\CMS\Core\Utility\GeneralUtility;

...
$message = $languageObj->getLabel('error_no_permission');
$title = $languageObj->getLabel('error_access_denied');
$flashMessage = GeneralUtility::makeInstance(
    FlashMessage::class,
    $message,
    $title,
    FlashMessage::ERROR,
    true
);
$flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
$messageQueue = $flashMessageService->getMessageQueueByIdentifier();
$messageQueue->addMessage($flashMessage);

内容的提问来源于stack exchange,提问作者Franz Holzinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:06:05