Laravel通配符左侧(开头)的URI

时间:2017-04-04 10:59:46

标签: php laravel laravel-4 routing

以下内容在Laravel文档中有明确定义:

Route::get('/users/{userid?}', $callback);

但是如何在URI的左侧侧处理通配符?我想通过一个语句来获取以下路由:

/about-us
/en/about-us
/fr/about-us

类似的东西:

Route::get('{language_code?}/about-us', $callback);

然而,这导致了一个未解决的重定向,至少在我正在进行的项目中。总之,我如何在Laravel中处理和选择左手通配符?

2 个答案:

答案 0 :(得分:2)

,您不能拥有可选参数,后跟所需的模式。

它也是Github回购中的一个问题,并被 Taylor Otwell

关闭

https://github.com/laravel/framework/issues/3549

建议的解决方案是:

1)在末尾添加可选参数。

2)你可以拥有一个子域名。

答案 1 :(得分:1)

正如Balarj所说“你不能有一个可选参数,后跟所需的模式”

但是

我们可以做一些不同的事情,例如:

Route::get('{language_code?}/about-us', function($language_code){
   if(!$language_code) {
      // if the user has not provided the language_code param
     return redirect('/about-us');
   }

  return 'Language is ' . $language_code;

});

然后定义default路线

Route::get('/about-us', function() {
    return 'about-us page';
});