如何在laravel 5.2路由中捕获可选参数

时间:2016-09-23 07:43:06

标签: php laravel laravel-5

我想创建一个通用路由来捕获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);
});

但不知道如何......

1 个答案:

答案 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