在其中一个项目中,我需要为每个捆绑包实施自定义404页面。
在documentation内,没有提到这种功能。
我正在与一些同事讨论这个问题,并被告知它必须使用kernel.exception事件,唉这个缺少bundle调用它的信息。
恕我直言,这应该通过对symfony路由器组件应用补丁来修复,这将允许开发人员指定可以进一步处理案例的catch-all路由。
另一种选择是更改RouterInterface :: match方法的行为,以返回包含匹配路径和匹配路径的包的一致输出。目前这是不可能的,因为如果匹配失败并且根本没有给你任何信息它会引发异常,但它可能会。
例如,我有一个ApiBundle,它定义为处理以" / api"开头的网址。目前处理这个并设置自定义404页面的唯一方法是在kernel.exception和preg_match()url时获取请求。然而,这是应该避免的硬编码,因为bundle不应该具有这样的知识 - 它是在app / config / routing文件下定义的。
您的意见是什么? 我也很感激其他任何解决方法。
答案 0 :(得分:1)
我最终实现了我的自定义ExceptionController,它调度了一个名为'ourCompany.exception_response'的事件。