【发布时间】: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'=>'{lang}'... 返回的是一个对象而不是字符串。这就是它使进程崩溃的原因。
如何使用Route::group() 解决此问题?
【问题讨论】: