我想创建一个通用路由来捕获laravel 5.2路由中的可选lang参数。
目前我使用此路线
//language switcher
Route::get('lang/{lang}/{suffix}', function($lang, $suffix) {
Session::set('applocale', $lang);
return Redirect($suffix);
});
所以,如果你在你的网址前加上一个可选的" / lang / [lang-code]"路由器将更改applocale并重定向到资源。
但是我想用一种更清晰的方式制作正则表达式,如:
//language switcher
Route::get('(es|ca|en)/{suffix}', function($lang, $suffix) {
Session::set('applocale', $lang);
return Redirect($suffix);
});
但不知道如何......
答案 0 :(得分:0)
一如既往地说:RTM!
<强>解决方案:强>
// generic language switcher
// catch any route preceded with "es" ,"ca" or "en", set the applocale and
// redirect to suffix route
Route::get('{lang}/{suffix}', function($lang, $suffix) {
Session::set('applocale', $lang);
return Redirect($suffix);
})
->where(['lang' => '(es|ca|en)', 'suffix' => '(.*)']);
https://laravel.com/docs/5.2/routing#parameters-regular-expression-constraints