2016-09-23 47 views
1

我想創建一個通用路由來捕獲我的laravel 5.2路由中的可選lang參數。如何在laravel 5.2路由中捕獲可選參數

目前,我在這條路線做

//language switcher 
Route::get('lang/{lang}/{suffix}', function($lang, $suffix) { 
    Session::set('applocale', $lang); 
    return Redirect($suffix); 
}); 

所以,如果你preceed您的網址,以及可選「/郎/ [郎碼]」路由器將AppLocale會發生變化,並重定向到該資源。

但是我想作一個更清潔的方式使用正則表達式,成才,如:

//language switcher 
Route::get('(es|ca|en)/{suffix}', function($lang, $suffix) { 
    Session::set('applocale', $lang); 
    return Redirect($suffix); 
}); 

但不知道如何..

回答

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