【问题标题】:Laravel 5 returns blank page for a method which does not existLaravel 5为不存在的方法返回空白页
【发布时间】:2015-04-17 09:00:18
【问题描述】:

我用 artisan make:controller 创建了一个 RESTful 控制器,我在我的 routes.php 中使用资源方法,这是我的 routes.php:

Route::resource('page', 'PageController');

我的控制器上没有任何编辑方法(我删除了它)所以如果我点击这个 URI:

http://laravel.dev/page/{id}/edit

Laravel 应该返回一个 404 页面,但实例它返回一个空白页面。

如何让它为不存在的方法返回 404 响应?

【问题讨论】:

  • 空白页通常意味着某处有错误。您是否开启了错误报告?
  • 是的,它打开了,似乎它正在寻找编辑方法,当找不到方法时它什么也不做。如果我将编辑方法添加到控制器,它就像一个魅力:)
  • 缺少的方法不是404页面,是php错误
  • 是的,但是当我们假设它是一个页面时,假设我将 uri 更改为这样的东西:laravel.dev/page/id/another_method_does_not_exist。它返回 404 页面。但是在 restful 控制器中,它假设存在编辑方法,即使它不存在!它什么也没有返回,因为没有什么可以返回。
  • 应该抛出MethodNotFoundException异常,如果没有设置报错是空白页

标签: php controller http-status-code-404 laravel-5 restful-url


【解决方案1】:

问题在于存储目录的权限,但我想知道为什么它只是发生在这个控制器上?我从应用程序的其他部分获取错误没有问题。

反正我先修改了存储目录的权限:

sudo chmod -R 777 storage/

然后我得到了 MethodNotFoundException,所以我将 only 添加到资源方法的第三部分以自定义我的路线,一切都很好:

Route::resource('page', 'PageController', ['only' => ['index', 'show'] ]);

现在它抛出 NotFoundHttpException

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2019-12-30
    • 2021-09-14
    相关资源
    最近更新 更多