Laravel 5.6路由区域

时间:2018-04-03 13:52:21

标签: php laravel

我正在尝试更改路线中的区域设置,但区域设置始终设置为“en”

Route::group(['prefix' => 'fr'], function (){
    App::setLocale('fr');
    Route::get('/home', 'HomeController@index');
});

Route::group(['prefix' => 'en'], function (){
    App::setLocale('en');
    Route::get('/home', 'HomeController@index');
});

fr / home getLocale返回'en'
en / home getLocale返回'en'

Route::prefix('fr')->group(function () {
    App::setLocale('fr');
    Route::get('home', 'HomeController@index');
});

Route::prefix('en')->group(function () {
    App::setLocale('en');
    Route::get('home', 'HomeController@index');
});

有同样的问题

2 个答案:

答案 0 :(得分:2)

您无法在Group方法中定义区域设置。它只会导致最后一个语言环境适用。

相反,您可以关注original guide并为每个方法实施路由,例如文档说:

Route::get('{locale}/home', function ($locale) {
    App::setLocale($locale);

    //
});

或创建一个middleware组,用于定义正确的语言。

答案 1 :(得分:0)

为什么不使用文档中的标准格式?

Route::prefix('admin')->group(function () {
    Route::get('users', function () {
    // Matches The "/admin/users" URL
    });
});

https://laravel.com/docs/5.6/routing#route-group-prefixes

要注意的另一件事是检查您的NGINX conf文件或apache .htaccess文件。他们可以做不想要的重定向。