我希望我的自定义错误页面使用我的主应用程序基础模板.通过基本模板用于KnpMenu构建菜单.部分meny仅为特权用户呈现,并且这样做我注入安全组件并执行如下检查:
if ($security->isGranted('ROLE_COURSES')) {
但是,当存在404时,在防火墙组件运行之前执行的路由组件中抛出异常.
我不完全确定实际注入到菜单构建器中的是什么,因为安全组件尚未运行,但是无论如何,当我尝试在生产中转到不存在的页面时,当if语句是执行.
这里推荐的方法是什么?如果我不得不放弃渲染我的404的菜单,我想这没关系,但我希望我仍然能够以完整的形式呈现菜单.
我知道这是一个老问题,但我自己面对这个问题,我通过创建一个匹配所有东西的额外路线来修复它,并且是我的路线最后匹配的东西:
pageNotFound:
pattern: /{path}
defaults: { _controller: MyContentBundle:PageNotFound:pageNotFound, path: '' }
requirements:
path: .*
Run Code Online (Sandbox Code Playgroud)
行动很简单:
public function pageNotFoundAction()
{
throw new NotFoundHttpException();
}
Run Code Online (Sandbox Code Playgroud)
由于您从控制器中抛出NotFound异常,因此防火墙已经运行,您现在已经app.user进入自定义404错误页面.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |