请教关于LARAVEL5自定义错误信息的问题

请教大神指点如何在模板中显示抛出的错误信息,如
abort(404, '对不起,你要编辑的用户没有找到');

如何在404的模板中把后面这一段提示信息显示出来?

另外请教,如何将前后台的错误页面区分开来,比如后台的404模板要和前台的404模板不一样,如何设置?
已邀请:

假面

赞同来自:

增加模板: \resources\views\errors\404.blade.php

eclanp

赞同来自:

那如何区分前后台的呢?这样的话只能是共用一个模板吧

[已注销]

赞同来自:

遇到同样问题,找了半天无解,只好自己看源码,发现源码并没有把abort的第二个参数的传到界面上,而是传了个空数组。(Laravel 5.0如此,5.1就修正了)

在这个文件下中:vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:115
protected function renderHttpException(HttpException $e)
{
    $status = $e->getStatusCode();

    if (view()->exists("errors.{$status}"))
    {
        return response()->view("errors.{$status}", [], $status);
    }
    else
    {
        return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
    }
}

于是在
app/Exceptions/Handler.php这个文件中重写renderHttpException方法
protected function renderHttpException(HttpException $e)
{
    $status = $e->getStatusCode();

    if (view()->exists("errors.{$status}"))
    {
        $data = ['message' => $e->getMessage()];

        return response()->view("errors.{$status}", $data, $status);
    }
    else
    {
        return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
    }
}

在resources/views/errors/404.blade.php中使用{{$message}}即可显示错误信息。

至于前后台区分,我觉得可以咋abort方法的第三个参数传自己定义的变量,然后重写上边所述方法,根据传过来的变量来判断使用哪个模板即可。

要回复问题请先登录注册