Php 可能是去拉威尔或拉威尔的路线?

Php 可能是去拉威尔或拉威尔的路线?,php,laravel,laravel-4,localization,laravel-routing,Php,Laravel,Laravel 4,Localization,Laravel Routing,我正在用Laravel4构建一个双语网站,我的URL包含一个地区标识符。除此之外,重要的是要有漂亮的鼻涕虫在正确的语言。假设我有一条路线,你可以在那里找到杯子。法语中的对等词是塔西斯 目前我正在做的是 Route::get('{locale}/mugs', ['uses' => 'MugsController@index']); Route::get('{locale}/mugs/{id}', ['uses' => 'MugsController@show']); Route::g

我正在用Laravel4构建一个双语网站,我的URL包含一个地区标识符。除此之外,重要的是要有漂亮的鼻涕虫在正确的语言。假设我有一条路线,你可以在那里找到杯子。法语中的对等词是塔西斯

目前我正在做的是

Route::get('{locale}/mugs', ['uses' => 'MugsController@index']);
Route::get('{locale}/mugs/{id}', ['uses' => 'MugsController@show']);

Route::get('{locale}/tasses', ['uses' => 'MugsController@index']);
Route::get('{locale}/tasses/{id}', ['uses' => 'MugsController@show']);
还有一个简短的URL/区域设置检查和控制器方法中的重定向,以确保slug使用正确的语言,这样您就不会得到
/fr/mugs

这工作正常,但可能会变得笨拙,因为我将有两个每个如果我做任何更多的路线。例如,我必须同时拥有
{locale}/mugs/陶瓷/{id}
{locale}/tasses/ceramique/{id}
,等等

在Laravel中有没有类似于
{locale}/mugs | tasses/{id}
的方法?或者甚至与RegEx核对


我知道你可以用正则表达式检查路由参数,但你能检查实际路径组件吗?

你可以这样做:

Route::get('{locale}/{special}', ['uses' => 'MugsController@show'])->where('special','^(mugs|tasses)$');

special
在这种情况下必须是
mugs
tasses
您可以创建正则表达式模式,并执行以下操作:

Route::pattern('mugs', 'mugs|tasses');

Route::get('{locale}/{mugs}', ['uses' => 'MugsController@index']);
Route::get('{locale}/{mugs}/{id}', ['uses' => 'MugsController@show']);

但现在他的所有路线都指向
MugsController@show
,他的代码也指向
MugsController@index
@hebron我没有注意到这一点。我刚把这个id部分改了