2016-11-01 5 views
1

まず最初に、他のコントローラ(リソースコントローラではない)でセッションがうまく動作していることを確認しましたが、リソースコントローラmyセッションを取得するコードが機能しませんでした。

は、ここでより多くの公共の機能があり、私のリソースコントローラ

<?php 

namespace App\Http\Controllers\Admin; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 

//tambahan 
use DB; 
use Session; 

//model 
use App\_admins; 
use App\Mahasiswas; 

class MahasiswaController extends Controller 
{ 
    protected $data; 
    protected $token; 

    public function __contruct(){ 
     $this->data = array(); 
     $this->middleware(function ($request, $next) { 
      $this->token = $request->session()->get('_admin_id'); 
      if (!$request->session()->has('_admin_id')) { 
       abort(404); 
      } 
      return $next($request); 
     }); 
    } 

    private function user($token){ 
     $this->data['query'] = _admins::find($token); 
    } 

    public function index(){ 
     echo $this->token; 
    } 

だが、ので、私は混乱を避けるために、ここでそれを示すわけではない空のままです。そして、ここにweb.phpの私のルートです:5.3

Route::group(['namespace' => 'Admin'],function(){ 

    Route::resource('/admin/mahasiswa','MahasiswaController'); 
    Route::resource('/admin/nilai','NilaiController'); 

}); 
+0

エラーが発生しましたか?あなたはコンストラクタで '$ request'を呼び出していますが、それをパラメータとして見ることはできません。 '__construct(Request $ request)'のようなヒントを試してみてください。 – camelCase

+0

@camelCase大丈夫だと思いますが、それでもまだ同じですが、私のセッションからデータが得られません。このコードは他のコントローラ(リソースコントローラではありません)で完璧に動作します –

+0

'dd($ request- >セッション) 'あなたの'コンストラクタ 'で? – camelCase

答えて

2

ミドルウェアはconstructorでまだ実行されていないので、あなたはsessionデータを収集できません。しかし、クロージャベースのアプローチを使用すると、次のような方法でアクセスできます。

$this->middleware(function($request, $next) { 
    // Get the session value (uses global helper) 
    $this->token = session('_admin_id'); 

    // If the value is null, abort the request 
    if (null === $this->token) abort(404); 

    return $next($request); 
}); 
関連する問題