laravel - Laravel 路由相同的基本路径
问题描述
在 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');
它工作正常,但有没有办法做一些更清洁的事情?喜欢极限parkings
路线?
解决方案
您的问题来自这样一个事实,即您资源丰富的控制器使用 GET 路由parkings/{parking}
,该路由然后匹配filters
并优先于另一条路由。
您可以从资源丰富的控制器中排除路由
Route::resource('parkings', 'Api\Parking\ParkingController')->except([
'show',
]);
Route::get('parkings/filters', 'Api\Parking\ParkingFilterController');
完整的文档在这里https://laravel.com/docs/7.x/controllers#restful-partial-resource-routes
如果您希望使用其他路由进行特定处理filters
但仍需要其他路由,则可以向您的路由器添加一个全局模式,该模式将匹配所有对象{parking}
except filters
。
https://laravel.com/docs/7.x/routing#parameters-global-constraints
Route::pattern('parking', '^(?!filters)([a-z0-9-_]+)$');
推荐阅读
- c++11 - C ++模板别名g ++ 5.4
- c - 自读取阻塞以来经过的时间
- logstash - 从 activemq 主题获取消息时,logstash 输入非常缓慢
- python - 每组时间戳之间的平均时间不按顺序
- r - 从R中的数据框中提取
- python - 使用 jupyter lab 重新连接到远程运行内核
- c# - 如何在运行时更改 WPF Material Design Palette?
- tensorflow.js - 加载 mobilenet v2 有效,但预训练的 mobilenet v2 失败
- ios - 无法使用 Xcode Instruments 定位内存泄漏
- performance - 如何按增长率顺序排列功能?所以 f(n) 是 O(g(n))