我正在使用Laravel 5.5
并且是新手。关于错误处理,我发现Laravel内置了许多外观和功能,但是,我似乎没有把它包围在它提供的所有功能(最初让我的生活更轻松)。
我想要的是每当发生错误(即抛出异常)时,Laravel会将用户重定向到上一页并显示错误消息(不是错误本身,您不希望用户能够看到此错误在生产中;我想到了'Error occurred'
)之类的东西。
我在所有视图中都包含一个显示错误的显示,所以我只需要传递(通过POST我假设)一个包含message
和title
的数组message
,以及style
(使用引导样式,例如danger
,warning
,success
)。理想情况下,异常会记录在某个地方,以便我以后能够重现错误。
我目前的解决方案是没有Laravel的优秀功能,因为我只是try-catch
到处并重定向到特定页面(我选择为这个错误的'正确')。而且,这压迫了原始错误。
对我的愿望最好的方法是什么?
答案 0 :(得分:4)
看看Laravel的异常处理程序:https://laravel.com/docs/5.5/errors#the-exception-handler
您可以通过实现返回重定向响应的自定义render()
方法来实现您的目标。
render
方法负责将给定的异常转换为应该发送回浏览器的HTTP响应。
答案 1 :(得分:1)
这是我的解决方案,它排除了验证,因此支持Laravel的内置验证错误,而其他每个错误都有不同的显示:
Log::error($exception->getMessage());
if($exception instanceof \Illuminate\Validation\ValidationException)
return parent::render($request, $exception);
return redirect(URL::previous())->withErrors(['Error', 'Unknown Error']);
感谢@ jedrzej.kurylo发布了一个解决方案,从哪里开始。上述代码应在/App/Exceptions/Handler.php
下使用,函数render
。