Exception 在laravel中调用并呈现控制器方法,无需重定向 背景

Exception 在laravel中调用并呈现控制器方法,无需重定向 背景,exception,routing,laravel-5,Exception,Routing,Laravel 5,laravel目前允许您轻松定义特定HTTP状态代码响应的视图。例如,HTTP状态代码404将自动显示resources/views/errors/404.blade.php视图(如果存在)。对于其他代码,如500个错误,它的工作原理相同 问题 我的站点上的所有路由都是通过控制器处理的,所有这些控制器都扩展了一个基本控制器。这个基本控制器有时会初始化用户,设置当前时区和其他随机内容。主模板通常依赖于这些变量。例如,如果用户已登录,控制器计算出该值并将该用户传递给视图。我的主模板查找该用户,并显示

laravel目前允许您轻松定义特定HTTP状态代码响应的视图。例如,HTTP状态代码404将自动显示
resources/views/errors/404.blade.php
视图(如果存在)。对于其他代码,如500个错误,它的工作原理相同

问题 我的站点上的所有路由都是通过控制器处理的,所有这些控制器都扩展了一个基本
控制器
。这个基本控制器有时会初始化用户,设置当前时区和其他随机内容。主模板通常依赖于这些变量。例如,如果用户已登录,
控制器
计算出该值并将该用户传递给视图。我的主模板查找该用户,并显示某些功能(如果存在)。当点击404时,我希望仍然能够显示用户特定的菜单,并继续使用404视图

问题: 我在Github上提交了一个问题,看看我们是否可以通过控制器路由HTTP异常,但他们不同意这个建议。所以现在我想看看,当我捕获HTTP异常时,是否有办法呈现控制器方法。我不想简单地重定向到适当的路由,而是捕获异常并呈现控制器方法

我对路由的内部结构了解不够,所以我很好奇,这可能吗?如果是,我该怎么做


谢谢

这绝对是可能的-查看
异常处理程序(在app\Exceptions下),或者查看实现一些以捕获未知路由


或者,您也可以从基本模板扩展404视图,在会话中保存数据以显示在视图上,或者甚至在404上调用带有闪存错误的
->返回()

这是绝对可能的-查看
异常处理程序(在app\Exceptions下),或者考虑实现一些方法来捕获未知的路由


或者,您也可以从基本模板扩展404视图,在会话中保存数据以显示在视图上,甚至在404上调用
->back()
,出现闪存错误。

我认为中间件不是处理异常的合适位置。我正在使用
处理程序
报告和呈现我的异常,目前只呈现一个视图。您知道如何从处理程序路由到控制器吗?我确实喜欢这个建议,即闪现一些数据并将其发送回去。目前可能会这样。我非常确定处理程序中有
redirect()
帮助程序,否则您也可以从请求/响应对象触发重定向。我认为中间件不是处理异常的合适位置。我正在使用
处理程序
报告和呈现我的异常,目前只呈现一个视图。您知道如何从处理程序路由到控制器吗?我确实喜欢这个建议,即闪现一些数据并将其发送回去。我相当肯定在Handler中有
redirect()
helper,否则您也可以从请求/响应对象触发重定向。