2016-11-01 2 views
1

Прежде всего, я уже проверял, что в другом контроллере (не в контроллере ресурсов) мой сеанс работает очень хорошо, но когда я это сделал в контроллере ресурсов, код для получения сеанса не работает.

Вот мой контроллер ресурсов

<?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:

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

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

}); 
+0

Произвольные ошибки? Вы вызываете '$ request' в свой конструктор, но я не вижу его в качестве параметра? Попробуйте ввести намеки типа: '__construct (Request $ request)'. – camelCase

+0

@camelCase okay Я добавляю это, но его все еще тот же, я до сих пор не получаю никаких данных с моей сессии, этот код отлично работает в другом контроллере (а не контроллере ресурсов) –

+0

Является ли он возвратом 'null', если вы' dd ($ request- > session) 'в вашем' constructor'? – camelCase

ответ

2

5.3 В промежуточном еще не запущены в 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); 
});