Laravel 路线排序
Laravel Routes ordering
我正在项目中使用 Laravel 4.2。
我已经为 :
设置了路线
slug, 类别, 服务
在排序方面,如果我将服务移动到 slug 上方,它找不到 slug 并最终转到服务控制器,同样,如果我将 slug 方法保留在服务上方。它也找不到。
我目前的路线如下:
Route::get('{slug?}', 'HomeController@index');
Route::get('{category?}', 'HomeController@category');
Route::get('{services?}', 'ServicesController@index');
有没有办法解决这个问题,第一类工作正常,但切换 slug 和服务会产生问题。
谢谢
他们用你写路由的方式,Laravel 无法告诉哪个请求应该去哪条路由,因为你用一个可选参数写了三个路由,这个参数可以是任何东西。
路由的工作方式是:它应用与模式匹配的第一条路由。这就是为什么当它遇到第一个说 "one param that can be anything" 的路线模式时,它会选择那条路线。
你应该给 Laravel 一些提示,例如:
Route::get('{slug?}', 'HomeController@index')->where('slug', '(blog|home|contact)');
Route::get('/category/{category?}', 'HomeController@category');
Route::get('/services/{services?}', 'ServicesController@index');
如果您限制可能的值或者如果您在 URL 中添加额外的部分,Laravel 将能够识别哪个路由应该去哪个处理程序。
看看 docs 以获得更多想法
我正在项目中使用 Laravel 4.2。
我已经为 :
设置了路线slug, 类别, 服务
在排序方面,如果我将服务移动到 slug 上方,它找不到 slug 并最终转到服务控制器,同样,如果我将 slug 方法保留在服务上方。它也找不到。
我目前的路线如下:
Route::get('{slug?}', 'HomeController@index');
Route::get('{category?}', 'HomeController@category');
Route::get('{services?}', 'ServicesController@index');
有没有办法解决这个问题,第一类工作正常,但切换 slug 和服务会产生问题。
谢谢
他们用你写路由的方式,Laravel 无法告诉哪个请求应该去哪条路由,因为你用一个可选参数写了三个路由,这个参数可以是任何东西。 路由的工作方式是:它应用与模式匹配的第一条路由。这就是为什么当它遇到第一个说 "one param that can be anything" 的路线模式时,它会选择那条路线。
你应该给 Laravel 一些提示,例如:
Route::get('{slug?}', 'HomeController@index')->where('slug', '(blog|home|contact)');
Route::get('/category/{category?}', 'HomeController@category');
Route::get('/services/{services?}', 'ServicesController@index');
如果您限制可能的值或者如果您在 URL 中添加额外的部分,Laravel 将能够识别哪个路由应该去哪个处理程序。
看看 docs 以获得更多想法