【问题标题】:Laravel prefix language prefix if it hasLaravel 前缀语言前缀(如果有)
【发布时间】:2020-07-20 23:16:09
【问题描述】:

我想在 Laravel 中使用语言选择器。我使用了这个解决方案:Laravel optional prefix routes with regexp。 它工作正常。我将位置存储在数据库中,例如:en,de。 只有当网站在数据库中设置了多种语言时,我才想使用前缀。那么如果我只有一种语言,我该如何防止使用 'prefix' => '{lang?}'

这里是我的 web.php(路由):

Route::group(['prefix' => '{lang?}', 'middleware' => 'locale', 'where' => ['lang' => "en|de"], function () {
    Route::get('/', 'HomeController@index');
    Route::get('article', 'ArticlesControllerController@index');
});

使用 1 种语言:

/home
/article

多语言:

/en/home
/de/home
/en/article
/de/article

【问题讨论】:

    标签: php laravel routes prefix


    【解决方案1】:

    在这种情况下,你可以使用闭包函数和 if 条件。根据值设置前缀,因为可以使用所有路由声明闭包,并添加一次带有前缀和一次不添加:

    $languageList = 'fr|en';
    
    $optionalLanguageRoutes = function() {
        Route::get('/test', 'DashboardController@test');
    };
    
    // Add routes with lang-prefix
    if ($languageList) {
        Route::group(
            ['prefix' => '/{lang}/', 'where' => ['lang' => $languageList]],
            $optionalLanguageRoutes
        );
    }
    
    // Add routes without prefix
    
    $optionalLanguageRoutes();
    

    当你没有语言时声明为空的语言列表。

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2021-10-21
      • 2011-01-03
      • 2016-06-05
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多