如何使用错误处理配置从Extbase返回适当的404错误

时间:2019-03-05 16:12:46

标签: typo3 extbase typo3-9.x

TYPO3版本:9.5.4

目标:我想从Extbase控制器返回带有正确状态码的404错误,该错误将配置用于在站点配置中设置的404错误处理。

检查404处理是否有效:我在站点配置中设置了404错误处理。这应该显示特定页面的内容。如果我访问www.my-domain.local / asdfasdf,我将获得一个404状态代码,其中包含我指定的页面的内容

我在Extbase中尝试了什么:

# In the action    
return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
        $GLOBALS['TYPO3_REQUEST'],
        'The requested page does not exist',
        ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
    );

结果:

变体A(站点配置中无错误处理):状态码为404>正常的异常

变体B(对显示页面内容进行错误处理):页面以状态200呈现,显示该页面的正常内容(页眉,页脚等)>不正常

问题:我如何使Extbase与普通页面做相同的事情?

1 个答案:

答案 0 :(得分:1)

如果仅在操作中返回此响应,则页面渲染正在进行中,不会被打断。将响应传递给 ImmediateResponseException ,以让ErrorHandler处理该响应。

$response = GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
    $GLOBALS['TYPO3_REQUEST'],
    'Your error message',
    ['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
);
throw new ImmediateResponseException($response);