假设我在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]]:查看:...
答案 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);
}