Laravel 5 拉威尔中间件公司;服务提供者流

Laravel 5 拉威尔中间件公司;服务提供者流,laravel-5,laravel-5.4,Laravel 5,Laravel 5.4,我有一个Laravel 5.4应用程序,我在中间件中设置应用程序的区域设置,这取决于根域,因为我为每种语言都有一个域。这是因为搜索引擎优化和广告词的东西,我不能改变这一点 其次,我有一个ViewComposer服务提供者,在这里我为布局视图准备数据。此数据取决于语言,但尚未设置语言,因为首先执行ServiceProvider 我该怎么办?如果当前工作流无效,您应该更改它 可能您应该将选择语言移到提供程序(相同或其他)中,以便在ViewComposer服务提供程序中设置语言。我解决了这个问题,制作

我有一个Laravel 5.4应用程序,我在中间件中设置应用程序的区域设置,这取决于根域,因为我为每种语言都有一个域。这是因为搜索引擎优化和广告词的东西,我不能改变这一点

其次,我有一个ViewComposer服务提供者,在这里我为布局视图准备数据。此数据取决于语言,但尚未设置语言,因为首先执行ServiceProvider


我该怎么办?

如果当前工作流无效,您应该更改它


可能您应该将选择语言移到提供程序(相同或其他)中,以便在ViewComposer服务提供程序中设置语言。我解决了这个问题,制作了一个GlobalVarServiceProvider,它获取语言并在请求中提供

$lang = Cache::rememberForever("aGreatKey", function () use ($stripped_domain) {
                return Lang::where('domain', $stripped_domain)->first();
            });
$request->attributes->add(['language' => $lang]);
然后我可以在ViewComposer服务提供商(以及其他任何地方)中获得它

重要的是,在ViewComposer服务提供者之前调用GlobalVarServiceProvider

$this->sprache = $request->attributes->get('sprache');