簡體   English   中英

講解Laravel 5.3 構造函數中Session的使用方法

[英]Explain how to use Session In The Constructor Laravel 5.3

根據laravel docs https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors我無法再訪問構造中的會話,因為中間件尚未加載,他們提供了一個我無法理解的示例

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->projects = Auth::user()->projects;

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

我如何在該函數中訪問我的會話? ,一個解釋會做

將它放在將處理請求的控制器的__construct()函數中。

Laravel 文檔聲明您不能再在構造函數中訪問中間件,因為它尚未加載。

通過使用特定的 Closure,您實際上是在強制 php(和 Laravel)加載您在 Closure 中擁有的任何邏輯作為中間件。 看看 Laravel 提供的基本控制器類,看看能不能把點連起來。

從本質上講,您正在破解框架。

話雖如此,這確實是不好的做法,您不應該在控制器的構造函數中調整會話。

 public function __constrcut(){
    //changing language accordding to session
    $this->middleware(function($request,$next){
        app::setLocale(Session::get('locale'));
        return $next($request);
    });

此代碼用於根據會話更改語言我使用的版本 laravel 5.5 注意:您必須先調用中間件然后使用會話作為構造函數看不到會話這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM