Php 拉雷维尔:没有显示错误

Php 拉雷维尔:没有显示错误,php,laravel,laravel-routing,laravel-route,Php,Laravel,Laravel Routing,Laravel Route,我正在使用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

我正在使用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 

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

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

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

GET         /photos/{photo}
PUT/PATCH.  /photos/{photo}
DELETE      /photos/{photo}
请阅读文档中的更多信息

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

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

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

这对你来说很好。

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

编辑此文件:

/app/Exceptions/Handler.php

添加这一行

use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;


使用您的
用户。在资源路由之前显示
路由。您是否尝试将您的
->替换为:
->仅(['index','create','store','update','destroy'])
public function render($request, Throwable $exception)
{
if ($exception instanceof MethodNotAllowedHttpException) 
         {
        abort(404);
         }
         return parent::render($request, $exception);
}