【问题标题】:Terminate laravel app not in route handler and send response终止不在路由处理程序中的 laravel 应用程序并发送响应
【发布时间】:2018-03-01 17:48:11
【问题描述】:

我需要在类方法中终止 laravel 应用程序,而不是在路由处理程序中。 我使用自定义异常和方法 render() 它工作正常,但我认为这不是最好的方法。

我的第二种使用方式:

redirect()->back()->with(...)->send();
die();

但是通过这种方式不能使用()方法和会话刷新,只能重定向...... 当我转储会话时它是空的... 解决此问题的最佳方法是什么?

【问题讨论】:

    标签: php laravel exception response


    【解决方案1】:

    当你使用die()函数时,你停止执行并且Laravel不会将执行期间添加的数据写入会话,你需要使用session()->save()强制写入会话,但不要更好方式。

    也许您可以在代码中添加returnreturn redirect()->back()->with(...)->send();

    【讨论】:

    • 谢谢,现在我明白了非保存会话的问题......当然我想使用return,但这个功能不在路由控制器中。这个函数类似于 Laravel 验证函数,该函数不是直接在控制器方法中执行的,这就是为什么我不能使用return。它的功能类似于 Laravel validate,Laralev 使用 ValidateExcetion 来解决这个问题。我认为这是最好的方法,你呢?
    • 如果您在自定义异常处理程序中的 render() 方法中使用此代码,则返回语句是正确的,因为渲染方法期望返回一个 \Illuminate\Http\Response 并且 redirect() 助手返回响应.
    • 好的,谢谢,现在我明白了,自定义异常和方法渲染是最好的方式,因为 Laravel 也是这样做的。我写的有问题,这样(有自定义例外)工作完美,当然有 h return 和没有 send()。但我正在寻找另一种方式。好的,谢谢 Eder Soares。
    猜你喜欢
    • 2016-05-05
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 2015-11-03
    相关资源
    最近更新 更多