2016-10-16 12 views

答えて

2

これは、5.2から5.3へのアップグレードガイド、laravelドキュメントから直接です:

セッション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

あなたは大歓迎です! –

関連する問題