2017-02-16 5 views
1

In Laravel 5.3.4 Ich kann auf Sitzungsvariablen in Konstrukt nicht zugreifen. Gibt es einen Weg dazu? Hier ist mein Code:Wie auf die Sitzung in __construct zugreifen?

// app/Http/Controllers/Controller.php 
    class Controller extends BaseController { 
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 

     public function __construct() { 
      $t = Translation::where('language_id', Session::get('language_id'))->get(); 
      View::share('t', $t); 
     } 
    } 

P.S. Ich muss Übersetzungen aus der Datenbank vor jedem Laden der Seite für alle Controller und Ansichten laden.

+1

für diese – msonowal

Antwort

4

In Laravel 5.3 können Sie nicht auf die Sitzung oder den authentifizierten Benutzer im Konstruktor des Controllers zugreifen, da die Middleware noch nicht ausgeführt wurde.

In Ihrem Controller Datei

public function __construct() 
{ 
    $this->middleware(function ($request, $next) { 
      $t = Translation::where('language_id',Session::get('language_id')->get(); 
      View::share('t', $t);Session::get('language_id'); 

      return $next($request); 
    }); 
} 
+0

dank einer Middleware erstellen. Jetzt habe ich den Session-Wert in Middleware-Funktion bekommen! Aber $ this-> languageId ist außerhalb der Middleware-Funktion null. Warum? Danke noch einmal! – Gediminas

+0

Nevermind - Ich finde heraus, dass das Übergeben von Variablen von Middleware zu Controller ein weiteres großes Problem für meine App ist. Ich kann es nicht in irgendeiner Weise arbeiten, die ich auf Stackoverflow finden kann. Die Antwort ist jetzt in Ordnung, denn das nächste Problem ist ein anderes Problem. Vielen Dank :) – Gediminas

1

Sie können auch wie dieses schreiben

public function __construct() 
{ 
    $this->middleware(function ($request, $next) { 
     if(Session::get('user_id') == NULL) 
     { 
      return Redirect::to('login'); 
     }else{ 
      return $next($request); 
     } 
    }); 
} 
Verwandte Themen