Laravel路由相同的基本路径

Laravel路由相同的基本路径,laravel,laravel-routing,Laravel,Laravel Routing,在Larave 7上,我有路径前缀相同的路由: /* |-------------------------------------------------------------------------- | Parking Routes |-------------------------------------------------------------------------- */ Route::resource('parkings', 'Ap

在Larave 7上,我有路径前缀相同的路由:

    /*
    |--------------------------------------------------------------------------
    | Parking Routes
    |-------------------------------------------------------------------------- */
    Route::resource('parkings', 'Api\Parking\ParkingController');
    Route::get('parkings/filters', 'Api\Parking\ParkingFilterController');
这样,
parkings/filters
返回404错误

如果我颠倒路线的顺序:

    Route::get('parkings/filters', 'Api\Parking\ParkingFilterController');
    Route::resource('parkings', 'Api\Parking\ParkingController');

它工作正常,但有没有办法做一些更干净的事情?与限制
停车
路线一样?

您的问题来自这样一个事实,即您的足智多谋的控制器使用GET路线
停车/{parking}
,然后该路线匹配
过滤器
,并优先于另一条路线

您可以从资源丰富的控制器中排除路由

Route::resource('parkings','Api\Parking\ParkingController')->除了([
"秀",,
]);
路线::get('parkings/filters','Api\Parking\ParkingFilterController');
完整的文档在这里

如果您希望使用
过滤器进行特殊处理
,但仍然需要其他路径,您可以向路由器添加一个全局模式,该模式将匹配所有与
{parking}
匹配的内容,除了
过滤器

Route::pattern('parking','^(?!filters)([a-z0-9-!]+)$);

我认为引用控制器时也需要一个操作。好的,谢谢你的回答,事实是我需要
显示
路线,是的,全局模式看起来不错,但我有很多路线。。。我会检查并验证你的答案