【问题标题】:How to catch optional argument in laravel 5.2 route如何在 laravel 5.2 路由中捕获可选参数
【发布时间】:2016-09-23 07:43:06
【问题描述】:

我想创建一个通用路由来捕获我的 laravel 5.2 路由中的可选 lang 参数。

目前我用这条路线做

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

所以,如果你在你的 url 前面加上一个可选的“/lang/[lang-code]”,路由器将改变 applocale 并重定向到资源。

但是我想用更简洁的方式使用正则表达式,比如:

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

但不知道怎么做..

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    一如既往: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

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 2016-12-24
      • 2017-04-04
      • 2015-02-05
      • 1970-01-01
      • 2017-03-24
      • 2014-10-13
      相关资源
      最近更新 更多