2017-11-11 182 views
3

我正在使用Laravel 5.5,对此我很陌生。关于错误处理,我发现Laravel有许多内置的外观和功能,但是,我似乎没有将自己的头围绕在它提供的所有功能上(最初使我的生活更轻松)。Laravel 5.5自定义异常处理

我想要的是,每当发生错误(即抛出异常)时,Laravel应将用户重定向到上一页并显示错误消息(不是错误本身,您不希望用户能够看到这在生产中;我想到了像'Error occurred')。

中,我有所有我的观点错误的显示,所以我只需要传递(通过POST我想)数组messagetitlemessage,以及style(采用引导方式,如dangerwarningsuccess)。理想情况下,异常会记录在某处,以便稍后重新生成错误。

我现在的解决方案没有Laravel的很好的功能,因为我只是try-catch无处不在,并重定向到特定的页面(我选择这个错误是'正确的')。此外,这压迫了原来的错误。

对于我的愿望,最好的方法是什么?

回答

4

看一看Laravel的异常处理程序:https://laravel.com/docs/5.5/errors#the-exception-handler

你可以达到你想要实现自定义render()方法会返回一个重定向响应什么。

render方法负责将给定异常转换为HTTP响应,该响应应该发送回浏览器。

+0

谢谢。我会看看这个。 –

+0

我已经在我的应用程序中实现了这一点,当我发现现在连验证错误都被我的错误消息“压缩”或覆盖。我想除了这个以外的所有东西,因为我认为验证确实做得很好。 –

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下使用。