我正在尝试为 Symfony 5 项目创建一个自定义 404 页面,该页面必须:
- 输出一个简单的 JSON 编码字符串,例如“未找到”。
- 必须从翻译资源中读取所述字符串。
- 有一个额外的
Content-Type: application/json
标题。
Symfony 文档中有一个部分试图解释如何实现这一点,但信息似乎不完整/不正确,显然是为 4.X 版本编写的,甚至指向 GitHub 上不存在的源文件。
我设法创建了一个错误控制器,但它吞噬了所有错误:
# config/packages/framework.yaml
framework:
error_controller: App\Controller\ErrorController::errorHandler
// src/Controller/ErrorController.php
class ErrorController extends AbstractController
{
public function errorHandler(TranslatorInterface $translator) : JsonResponse
{
return new JsonResponse($translator->trans('not_found'));
}
}
问题是这会导致返回 404 页面的任何错误(包括内部错误)。
我怎样才能让这个控制器/方法只处理 404 错误,而让框架本身像以前一样处理其他一切?