【问题标题】:how to show 404 page if route not found in laravel如果在 laravel 中找不到路由,如何显示 404 页面
【发布时间】:2015-11-17 13:46:56
【问题描述】:

我已经使用中间件创建了路由组。它运行良好。

但是我有一个问题,如果我将网址导航到

http://localhost/laravel-news/public/admin/add-post-new

这个没有登录然后它重定向到访客主页

但如果我将网址导航到

http://localhost/laravel-news/public/add-post-new

url 中没有管理员,然后它返回空白页面。现在我的问题是如何显示找不到页面的 404 页面。我使用的是 laravel 5.1

谢谢

更新

Route::group(['middleware' => 'admin'], function () {


            Route::get('add-post-new', function () {

        //  dd('something');
            return view('a.addPost');

            });

            Route::post('/add-post-new','PostsController@addPost');

            Route::get('/all-post', function () {return view('a.all_post'); });



});

【问题讨论】:

  • 有没有抛出错误?尝试在resources/views/errors/404.blade.php添加404错误页面,看看页面是否渲染..
  • @MateiMihai.no 抛出错误。我添加了 404 错误页面,但仍然无法正常工作。我也有那个添加后新页面,但它应该只能访问管理员而不是任何其他用户
  • 请告诉我们路由组的样子(代码)。否则只是猜测。
  • @martinweise.i 更新了我的问题
  • 如何处理其余 API 的这个问题?我需要发送 json 响应。

标签: php laravel laravel-5.1


【解决方案1】:

更新 06.08.2020

/resources/views/errors/ 文件夹中创建一个 404.blade.php 页面,该页面将在以下情况下显示:

  • 路线不存在
  • 当你使用->findOrFail($modelId);
  • 当你使用abort(404);

代替不存在的路线的laravel错误:

Sorry, the page you are looking for could not be found.
1/1 NotFoundHttpException in RouteCollection.php line 161:
  1. /resources/views/errors/文件夹中创建404.blade.php页面

然后只需调用它

abort(404);

例如制作这样的路线:

Route::get('/404', function () {
    return abort(404);
});

【讨论】:

  • 如何处理其余 API 的这个问题?我需要发送 json 响应。
  • @151291 return response()->json(['message' => 'error'), 'code' => 404])->setStatusCode(404);
  • 小修正:您不需要return abort(404);,因为abort 函数不会返回任何内容。只需删除 return 并对其进行测试。
【解决方案2】:

试试这个:

abort(404);

更多信息http://laravel.com/docs/5.1/routing#throwing-404-errors

【讨论】:

  • @Grald.thanks.i 得到了那个错误。因为 laravel 项目。在我的新副本中它工作正常
【解决方案3】:

您使用 this 设置了 404 路由。然后使用该路由中的任何视图文件

App::error(function(Exception $exception, $code)
{
Log::error($exception);

if (Config::get('app.debug') == false) {
    return Redirect::route('404');
}
});

【讨论】:

    【解决方案4】:

    你可以使用 abort();方法并在错误文件夹中创建一个视图,正如文档中所述。

    Laravel 会自动获取错误页面并显示出来。

    http://laravel.com/docs/5.1/errors#http-exceptions

    【讨论】:

      【解决方案5】:
      try{
          return view($SomeInvalidView);
      }  catch (Exception $e){
          abort(404);
      }
      

      【讨论】:

        猜你喜欢
        • 2015-11-18
        • 1970-01-01
        • 2016-10-20
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        相关资源
        最近更新 更多