2016-02-10 14 views

Odpowiedz

9

Nie można odczytać sesji bezpośrednio od usługodawcy: w laravel sesja jest obsługiwana przez StartSession middleware, który wykonuje po wszystkich usługodawców fazie rozruchowej

Jeśli chcesz podzielić zmiennej sesji z wszystkimi widzenia można użyć view composer od usługodawcy:

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

przekazany jako drugi argument do kompozytora zwrotna zostanie wywołana gdy widok zostanie wygenerowana, więc StartSession będą już wykonywane w tym momencie

0

Poniższe działa dla mnie na Laravel 5.2, czy powoduje błędy w Twojej aplikacji?

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> 

napis "pl" w przeglądarce.

+0

\ sesja nie działa, uzyskanie pustych wyników, np próbowałem to 'print_r (\ Session :: wszystkie());' żadnych wyników – Qazi

+1

@Kaloyan: jesteś na pewno nie ustawiasz zmiennej gdzieś indziej? Nie sądzę, że możesz uzyskać dostęp do sesji od usługodawcy, ponieważ jest on uruchomiony w oprogramowaniu pośredniczącym – Moppo

+0

@Moppo, tak, nie ustawiam tego nigdzie indziej, może to coś zmieniło się pomiędzy 5.1 a 5.2? –

Powiązane problemy