2015-12-29 71 views
6

我在Laravel 5.2使用會話,這裏是我的控制器代碼:Laravel 5.2 - 調用未定義的方法照亮的 Support 外立面支持::會議()

if ($request->session()->has('username')) { 
     return view('dashboard'); 
} 

我需要使用會話,收到此錯誤:

FatalErrorException在HomeController.php 21行:調用未定義 方法照亮的\ Support \外立面\支持::會議()

如何解決它?

+1

請務必添加'使用Illuminate \ Http \ Request;' –

回答

7

不確定哪裏有$request來自哪裏,但更有可能是您注入了錯誤的類型。

如果你只是想你想使用Illuminate\Http\Request

$request實例還挺看起來像您所遇到的門面,而不是注射。

Request(在根名稱空間)是別名門面。

Illuminate\Http\Request是你想要的實例的實際請求類。

+0

好吧,它在控制器上。我已經在頂部定義了使用Illuminate \ Http \ Request。但會話has()方法不起作用。 –

+0

那個錯誤意味着它被注入了錯誤的類。所以除非你的帖子中的錯誤得到解決,否則你甚至沒有進入'has'調用。 – lagbox

0

嘿如果你使用的是laravel 5.2,這對我來說很合適。

將您的控制器放入'網絡'中間件中。 like,

Route::group(['middleware' => 'web'], function() { 
    //routes here 
}); 

並確保內核文件已註冊中間件類。

/** 
* The application's route middleware groups. 
* 
* @var array 
*/ 
protected $middlewareGroups = [ 
    'web' => [ 
     \Perkweb\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \Perkweb\Http\Middleware\VerifyCsrfToken::class, 
    ], 

    'api' => [ 
     'throttle:60,1', 
    ], 
]; 
+0

我也這麼做了。但是,我想我找出了這個問題。我的問題是,我無法使用'$ request-> session-> has('key')'。問題是我剛剛創建會話像'session('key')'。但如果我使用'$ request-> session() - > put('key','value');'那麼它可能會工作! –

+0

在這裏,你去..你發現你的問題的問題...;) – Cowboy

+0

對。但是,無論如何謝謝。 :) –

0

你可以試試這樣的Session Facade。

在頂部..

use Session; 

在你的控制器的方法..

if (Session::has('username')) { 
    return view('dashboard'); 
} 
0

只是改變你的變量$請求另一個變量名。例如$ requestApp

下面是代碼:

if ($requestApp->session()->has('username')) { 
    return view('dashboard'); 
} 

因爲默認情況下$請求屬於使用照亮\ HTTP \請求;

0

儘量把這個在你的文件開始:

use Illuminate\Http\Request; 

我有同樣的問題,解決了這個方式。

相關問題