【问题标题】:call and render a controller method in laravel without a redirect在 laravel 中调用和渲染控制器方法,无需重定向
【发布时间】:2015-09-08 20:35:56
【问题描述】:

背景

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

问题

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

问题

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

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

谢谢!

【问题讨论】:

    标签: exception routing laravel-5


    【解决方案1】:

    这绝对是可能的 - 查看ExceptionHandler(在 app\Exceptions 下),或者查看实现一些 Middleware 以捕获未知路由。

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

    【讨论】:

    • 我会说中间件不是处理异常的合适地方。我正在使用Handler 报告和呈现我的异常,目前只呈现一个视图。你知道如何从处理程序路由到控制器吗?我确实喜欢闪存一些数据并将它们发回的建议。暂时可能会这样做。
    • 我很确定 redirect() 帮助器在 Handler 中可用,否则您也有可以触发重定向的请求/响应对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2017-07-12
    • 1970-01-01
    • 2020-11-22
    • 2015-05-03
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多