是否有可能在App中返回:在Laravel过滤之前?

时间:2015-07-21 16:19:07

标签: php laravel laravel-4

在应用程序启动之前,我需要检查一些事情,如果出错了加载错误页面。所有操作都在App:before过滤器中完成,但return除外,因为它不起作用。以某种方式可以从before过滤器停止应用程序吗?

1 个答案:

答案 0 :(得分:2)

我会尝试抛出异常。您可以定义类似BootstrapException的内容。如果App::before()

出现问题,你就扔掉它
App::before(function ($request) {
    // do checks

    if (/* checks failed */) {
       throw new BootstrapException;
    }
});

之后,您可以在已start/global.php来电的App::error()中收听该异常(例如):

App::error(function (BootstrapException $exception, $code) {
    return Response::view('errorpage', [], $code);
});

我对此不确定,但是将App::error()放在App::error(function (Exception $exception, $code) { ... });中定义的 catch all start/global.php之前,因为每个例外情况都是如此源自Exception,因此您的BootstrapException将被错误处理调用捕获,而不是由您的特定错误处理代码捕获。