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与普通页面做相同的事情?
答案 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);