【问题标题】:Laravel : errors is not showingLaravel:错误未显示
【发布时间】:2020-12-04 11:28:41
【问题描述】:

我在 laravel 中使用资源,我想要一个自定义 uri 路由来执行(显示)操作我的路由是:

Route::resource('/admin/users', 'UsersController')->except(['show']);
Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');

我检查了一个测试 url,但未在此路由中显示错误 404 例如:

http://127.0.0.1:8000/admin/users/test

显示此错误

The GET method is not supported for this route. Supported methods: PUT, PATCH, DELETE.

当我删除代码时,除了(['show']) 我的代码工作正常并显示 404 错误 但我的路线列表显示两条路线以进行表演

|        | GET|HEAD  | backend/users/{user}      | backend.users.show 
|        | GET|HEAD  | backend/users/{user}/show | backend.users.show 

【问题讨论】:

  • 在资源路由之前使用users.show 路由。
  • 您是否尝试将您的->except 替换为:->only(['index', 'create', 'store', 'update', 'destroy'])

标签: php laravel laravel-routing laravel-route


【解决方案1】:

我找到了解决这个问题的方法

编辑此文件:

/app/Exceptions/Handler.php

添加这一行

use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;

public function render($request, Throwable $exception)
{
if ($exception instanceof MethodNotAllowedHttpException) 
         {
        abort(404);
         }
         return parent::render($request, $exception);
}

【讨论】:

    【解决方案2】:

    尝试将except(['show']) 替换为

      ->only(['index', 'create', 'store', 'update', 'destroy'])
    

    这在你的情况下可以正常工作。

    【讨论】:

      【解决方案3】:

      这是因为您的路由不是 404 错误,因为当您在创建路由时使用 ::resource 时,它使用与 show() 相同的路由,就像使用 update()destroy() 方法一样,但是使用不同的请求动词。

      GET         /photos/{photo}
      PUT/PATCH.  /photos/{photo}
      DELETE      /photos/{photo}
      

      在文档https://laravel.com/docs/7.x/controllers#resource-controllers中了解更多信息

      当您指定 except(['show']) 时,您将删除 get 路由,但 PUT/PATCH 和 DELETE 方法的路由仍然存在。

      【讨论】:

        【解决方案4】:

        您的两个路由 URI 模式相同,因此您需要在 resource 路由之前定义路由:

        Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');
        Route::resource('/admin/users', 'UsersController')->except(['show']);
        

        【讨论】:

          猜你喜欢
          • 2012-12-14
          • 2016-09-29
          • 2018-08-03
          • 2016-09-25
          • 2018-04-16
          • 2021-04-09
          • 1970-01-01
          • 2018-04-19
          • 2019-11-27
          相关资源
          最近更新 更多