2016-10-16 72 views

回答

2

這是直接從laravel文檔,升級指南從5.2到5.3:

會議在構造

在Laravel的早期版本中,您可以訪問會話變量或身份驗證的用戶你的控制器的構造函數。這從來沒有打算成爲框架的明確特徵。在Laravel 5.3中,由於中間件尚未運行,因此無法訪問控制器構造函數中的會話或經過身份驗證的用戶。

作爲替代方案,您可以直接在控制器的構造函數中定義基於Closure的中間件。使用此功能之前,請確保您的應用程序正在運行Laravel 5.3.4或以上:

<?php 

namespace App\Http\Controllers; 

use App\User; 
use Illuminate\Support\Facades\Auth; 
use App\Http\Controllers\Controller; 

class ProjectController extends Controller 
{ 
    /** 
    * All of the current user's projects. 
    */ 
    protected $projects; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware(function ($request, $next) { 
      $this->projects = Auth::user()->projects; 

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

當然,你也可以通過類型暗示的照射\ HTTP \請求訪問請求的會話數據或身份驗證的用戶在您的控制器行動類:

/** 
* Show all of the projects for the current user. 
* 
* @param \Illuminate\Http\Request $request 
* @return Response 
*/ 
public function index(Request $request) 
{ 
    $projects = $request->user()->projects; 

    $value = $request->session()->get('key'); 

    // 
} 
+0

謝謝你的答案。 –

+0

不客氣!! –