Laravel Middleware&服务提供商流程

时间:2017-03-30 21:07:03

标签: laravel-5 laravel-5.4

我有一个Laravel 5.4应用程序,我在中间件中设置应用程序的Locale,具体取决于根域,因为我有每种语言的域。这是因为SEO& Adwords的东西,我无法改变它。

其次,我有一个ViewComposerServiceProvider,我为布局视图准备数据。此数据取决于语言,但语言尚未设置,因为首先执行ServiceProvider。

我该怎么办?

2 个答案:

答案 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。