在我正在处理的一个项目中,需要为每个捆绑包实现自定义 404 页面。
在文档中没有提到此类功能。
我正在与一些同事讨论这个问题,并被告知它必须使用 kernel.exception 事件,可惜这个事件缺少包调用它的信息。
恕我直言,这应该通过对 symfony 路由器组件应用补丁来解决,这将允许开发人员指定可以进一步处理这种情况的包罗万象的路由。
另一种选择是更改 RouterInterface::match 方法的行为以返回包含匹配路径和匹配它的包的一致输出。目前这是不可能的,因为如果匹配失败,它会抛出异常并且根本不会给你任何信息,虽然它可以。
例如,我有一个 ApiBundle,它被定义为处理以“/api”开头的 url。目前处理这个并设置自定义 404 页面的唯一方法是在 kernel.exception 和 preg_match() 时获取请求的 url。然而,这是应该避免的硬编码,因为包不应该有这样的知识——它是在 app/config/routing 文件下定义的。
你怎么看?
我也将不胜感激任何其他解决方法。