2016-02-10 3 views

Antwort

9

Sie können nicht lesen Sitzung direkt von einem Dienstanbieter: in Laravel die Sitzung durch StartSession Middleware behandelt wird, die mit allen Ansicht einer Session-Variablen teilen Wenn Sie den Service-Provider-Boot-Phase

schließlich ausführt wollen Sie können ein view composer vom Dienstanbieter verwenden:

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

der Rückruf als zweites Argument an die Komponisten genannt weitergegeben werden, wenn die Ansicht, gemacht werden wird, so wird die StartSession bereits an dieser Stelle ausgeführt werden

0

Folgendes funktioniert bei mir auf Laravel 5.2, verursacht es Fehler in Ihrer App?

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> 

Shows "en_US" im Browser.

+0

\ Sitzung nicht funktioniert, immer leer Ergebnisse, zum Beispiel habe ich versucht, diese 'print_r (\ Session :: alle()) arbeitet;' keine Ergebnisse – Qazi

+1

@Kaloyan: Sie sind sicher, dass Sie die Variable nicht woanders setzen? Ich glaube nicht, dass Sie von einem Dienstanbieter auf die Sitzung zugreifen können, da es in einer Middleware gestartet wurde – Moppo

+0

@Moppo, ja, ich setze das nirgendwo anders ein, vielleicht ist es etwas, das sich zwischen 5.1 und 5.2 geändert hat? –

Verwandte Themen