Laravel Routes订购

时间:2015-10-19 10:24:00

标签: php laravel laravel-4 url-routing laravel-routing

我正在项目中使用Laravel 4.2。

我有以下设置路线:

slug,category,services

在订购方面,如果我将服务移到slug之上,它就找不到slug并最终转到服务控制器一样,如果我将slug方法保留在服务之上。它也找不到。

我目前的路线如下:

Route::get('{slug?}', 'HomeController@index');
Route::get('{category?}', 'HomeController@category');
Route::get('{services?}', 'ServicesController@index');

有没有办法解决这个问题,第一类工作正常,但切换slu and和服务会产生问题。

由于

1 个答案:

答案 0 :(得分:2)

他们写道路的方式,Laravel没办法告诉哪个请求应该去哪条路线,因为你用一个可选参数编​​写了三条路线,可能是任何东西。 路由的工作方式是:它应用匹配模式的第一个路由。这就是为什么当它遇到第一个路线模式,说“一个可以是任何东西的参数”时,它会选择那条路线。

你应该给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以获取更多想法