Как вернуть правильную ошибку 404 из Extbase с конфигурацией обработки ошибок - PullRequest
1 голос
/ 05 марта 2019

TYPO3 Версия: 9.5.4

Цель: Я хочу вернуть ошибку 404 от контроллера Extbase с соответствующим кодом состояния и т. Д., Который используетКонфигурация для обработки ошибок 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> OK

Вариант B (обработка ошибок допоказать содержимое страницы): страница отображается со статусом 200, показывает нормальное содержимое указанной страницы (верхний и нижний колонтитулы и т. д.)> Не в порядке

Вопрос: Как мне получить Extbase для выполнениято же самое, что и обычные страницы?

1 Ответ

3 голосов
/ 06 марта 2019

Если вы просто вернете этот ответ в своем действии, рендеринг страницы выполняется и не прерывается. Передайте ответ в ImmediateResponseException , чтобы ErrorHandler мог обработать его.

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