我有一个Laravel 5.4应用程序,我在中间件中设置应用程序的Locale,具体取决于根域,因为我有每种语言的域。这是因为SEO& Adwords的东西,我无法改变它。
其次,我有一个ViewComposerServiceProvider,我为布局视图准备数据。此数据取决于语言,但语言尚未设置,因为首先执行ServiceProvider。
我该怎么办?
答案 0 :(得分:0)
如果当前工作流程无效,则应更改它。
可能您应该选择语言到提供者(相同或其他),以便在ViewComposerServiceProvider中设置语言
答案 1 :(得分:0)
我解决了这个问题,我创建了一个GlobalVarServiceProvider来获取语言并在请求中提供它
$lang = Cache::rememberForever("aGreatKey", function () use ($stripped_domain) {
return Lang::where('domain', $stripped_domain)->first();
});
$request->attributes->add(['language' => $lang]);
然后我可以在ViewComposerServiceProvider(以及其他任何地方)
中获取它$this->sprache = $request->attributes->get('sprache');
重要的是,在ViewComposerServiceProvider之前调用GlobalVarServiceProvider。