Laravel:如何在AppServiceProvider中访问会话值?

时间:2016-02-10 11:32:02

标签: php laravel session laravel-5 laravel-5.1

有没有办法可以访问AppServiceProvider中的会话值?我想在所有视图中全局共享会话值。

2 个答案:

答案 0 :(得分:16)

您无法直接从服务提供商处读取会话:在Laravel中,会话由StartSession中间件处理,该中间件在所有服务提供商启动阶段后执行

如果您想与所有视图共享会话变量,可以使用服务提供商提供的NativeRequestHandler

public function boot()
{
    view()->composer('*', function ($view) 
    {
        $view->with('your_var', \Session::get('var') );    
    });  
}

当渲染视图时,将调用作为第二个参数传递给作曲家的回调,因此StartSession将在此时执行

答案 1 :(得分:0)

以下适用于Laravel 5.2,是否会导致您的应用出错?

<强> AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    \Session::put('lang', 'en_US');
    view()->share('lang', \Session::get('lang', 'de_DE'));
}

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    //
}
}

<强> home.blade.php

<h1>{{$lang}}</h1>

显示&#34; en_US&#34;在浏览器中。