Laravel 5.2 - 未定义路由的默认错误页面

时间:2016-08-02 00:08:10

标签: php laravel laravel-5 laravel-5.2

假设我在routes.php中有这个:

Route::get('sells', ['as' => 'user_sells', 'uses' => 'SellsController@indexAll']);

现在,如您所知,如果有人打开mySite.com/sells,则会执行控制器中所需的方法。

但是,如果有人试图访问一个根本没有定义的路线,比如mySite.com/buys,我想显示一个默认的错误页面。我的意思是,我需要说明一个路线是否未定义,显示一个特定的页面。

我该怎么做?

提前致谢

加了: 我尝试访问未定义路由时遇到的错误:

  

糟糕,看起来出了问题。

     

错误异常   C:\瓦帕\ WWW \代码\ laravel5 \ portpapa \厂商\ laravel \框架\ SRC \照亮\容器\ Container.php   第835行:无法解析的依赖关系解析[参数#0 [   类Illuminate \ Routing \ Route中的$ methods]]:查看:...

2 个答案:

答案 0 :(得分:3)

实际上,Laravel默认已经有了这个。如果您在errors/404.blade.php文件夹中创建名为resources/views的视图,则会自动生成。

如果您想使用自定义代码处理404错误,只需捕获NotFoundHttpException类中的App\Exceptions\Handler异常:

public function render($request, Exception $e)
{
    if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
        // handle here
        return response()->view('errors.404', [], 404);
    }
}

答案 1 :(得分:3)

如果未定义路由,则抛出NotFoundHttpException。 例外情况在Larevel的app / Exceptions / handler.php中进行管理。

您必须检查异常是否为NotFoundHttpException,在这种情况下,返回正确的视图。

public function render($request, Exception $e)
{
    if ($this->isHttpException($e))
    {       
        if($e instanceof NotFoundHttpException)
        {
            return response()->view('my.view', [], 404);
        }
        return $this->renderHttpException($e);
    }
    return parent::render($request, $e);
}

Source