【问题标题】:How to set language (locale) inside a Route::group()... in Laravel 5.4?如何在 Laravel 5.4 中的 Route::group()... 中设置语言(区域设置)?
【发布时间】:2017-08-22 02:38:36
【问题描述】:

刀片内部 - welcome.blade.php.

 <div class="links">
      <a href="https://laravel.com/docs">{{ __('passwords.reset') }}</a>
 </div>

web.php内部。

如果我跑:

Route::get('/', function () {
    return view('welcome');
});

我得到带有正确翻译的正确欢迎刀片页面。

另一条路线:

Route::get('welcome/{lang}', function ($lang) {
//    echo $lang;
//    dd(Lang::getLocale());
    App::setLocale($lang);
    //dd(Lang::getLocale());
    return view('welcome');    
    //
});

如果我运行 dd(Lang::getLocale());,我可以看到 URL http://testapp/welcome/en 发送的正确语言。在这种情况下'en'。如果我在评论中输入dd(),我可以在 Laravel 欢迎页面中看到正确的翻译。

但是当我运行这段代码时:

Route::group(['prefix'=>'welcome'], function (){    
    Route::group(['prefix'=>'{lang}'], function ($lang){
        //echo $lang;
        //dd(Lang::getLocale());
        App::setLocale($lang);
        //dd(Lang::getLocale());
        return view('welcome');            
    });
});

这就是我所拥有的:

echo $lang; 给我ErrorException in web.php line 30: Object of class Illuminate\Routing\Router could not be converted to string

dd(Lang::getLocale()); 给我'en'

App::setLocale($lang); 给我 404 Not Found

App::setLocale($lang); AND return view('welcome'); 给我 404 Not Found

return view('welcome'); 给我 404 Not Found

当我跑步时

App::setLocale($lang);
dd(Lang::getLocale());
return view('welcome');

我得到一个对象:

Router {#21 ▼
  #events: Dispatcher {#23 ▶}
  #container: Application {#3 ▶}
  #routes: RouteCollection {#25 ▶}
  #current: null
  #currentRequest: null
  #middleware: array:6 [▶]
  #middlewareGroups: array:2 [▶]
  +middlewarePriority: array:6 [▶]
  #binders: []
  #patterns: []
  #groupStack: array:3 [▶]
}

所以,我猜Route::group(['prefix'=&gt;'{lang}'... 返回的是一个对象而不是字符串。这就是它使进程崩溃的原因。

如何使用Route::group() 解决此问题?

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    问题在于Route::group 只是一个用于组织和分组其他路由的包装器。它不是一个定义的 url。 Route::groupRoute::post/get 工作方式不同,因此您不能将逻辑放入 Route::group 调用中。

    你可以做的如下

    Route::group(['prefix'=>'welcome'], function (){    
        Route::group(['prefix'=>'{lang}'], function (){
            Route::get('/', function ($lang) {
                App::setLocale($lang);
                return view('welcome');
            });            
         });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多