我无法让Laravel使用Response :: error('500')渲染500默认错误页面(views / error / 500.php)。
创建一个虚拟控制器并添加以下公共方法:
public function action_index()
{
try
{
throw new Exception;
}
catch(Exception $e)
{
Response::error('500');
}
}
当您运行此路线时,请注意您将收到一个空白页面,标题状态为200,而不是500.
我希望渲染views / error / 500.php中的默认500错误页面,并停止执行其余脚本(假设更长的脚本)。
将标题状态为200的空白页面发送到浏览器。
我还能提供什么其他方法来使这个问题更容易理解或排除故障。 Laravel论坛(http://forums.laravel.io/viewtopic.php?id=2191)上出现了类似的(完全相同的)问题,并且在一段时间后它被证明是固定的。
在application / routes.php中,我有500个错误处理程序的以下代码:
Event::listen('500', function()
{
return Response::error('500');
});
您可以在https://github.com/laravel/laravel/blob/master/laravel/response.php的GitHub上看到Response对象的源代码。
答案 0 :(得分:6)
你错过了“回归”。你必须总是“回归”。
public function action_index()
{
try
{
throw new Exception;
}
catch(Exception $e)
{
return Response::error('500');
}
}
答案 1 :(得分:2)
你也可以返回这个事件,这会给你同样的东西,但允许你通过更改注册的事件来改变一行中的行为。
public function action_index()
{
try
{
throw new Exception;
}
catch(Exception $e)
{
return Event::first('500');
}
}