laravel 5自定义404

22 php laravel laravel-routing laravel-5

这真让我抓狂.我正在使用Laravel 5,看起来4.2和生成404页面的文档不起作用.

首先,没有global.php,所以我尝试在routes.php中添加以下内容:

App::missing(function($exception)
{
    return Response::view('errors.missing', array(), 404);
});
Run Code Online (Sandbox Code Playgroud)

这导致错误"方法缺失()未找到"

Debug设置为false.

我已经搜索和搜索,但到目前为止还没有找到关于在Laravel 5中设置404页面的信息.非常感谢任何帮助.

小智 41

转到资源/视图/错误并在404页面上创建一个包含所需内容的404.blade.php文件,Laravel负责其余部分.

  • 哇,这样的广告@HaykAghabekyan (4认同)
  • 这将起作用,但这不是开发人员完全控制的,因为您无法在布局中使用错误视图.你可以看到我的答案. (2认同)

Hay*_*yan 12

如果你想要一些全局解决方案,你可以通过添加代码来改变/app/Exceptions/Handler.php

public function render($request, Exception $e)
{
    if ($this->isHttpException($e)) {

        $statusCode = $e->getStatusCode();

        switch ($statusCode) {

            case '404':
                return response()->view('layouts/index', [
                    'content' => view('errors/404')
                ]);
        }
    }
    return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)


Mit*_*ate 5

在 Laravel 5 中,您可以简单地将自定义404.blade.php放在资源/视图/错误下,就是这样。对于像 500 这样的其他错误,您可以在app/Exeptions/Handler.php 中尝试以下操作

public function render($request, Exception $e)
{

    if ( ! config('app.debug') && ! $this->isHttpException($e)) {
        return response()->view('errors.500');
    }

    return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)

并对 500 个 HTTP 例外执行相同操作