Laravel 5.2 - 调用未定义的方法Illuminate \ Support \ Facades \ Request :: session()

时间:2015-12-29 20:18:21

标签: session laravel-5.2

我在Laravel 5.2中使用会话,这是我的控制器代码:

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

我需要使用session,并收到此错误:

  

HomeController.php第21行中的FatalErrorException:调用undefined   方法Illuminate \ Support \ Facades \ Request :: session()

如何解决?

5 个答案:

答案 0 :(得分:8)

不确定$request来自哪里,但很可能你注入了错误的类型。

如果您只想要$request个实例,则可以使用Illuminate\Http\Request

有点看起来你正在注入Facade。

Request(在根命名空间中)是别名的Facade。

Illuminate\Http\Request是您想要实例的实际请求类。

答案 1 :(得分:6)

尝试将此文件放在您的文件开头:

use Illuminate\Http\Request;

我遇到了同样的问题并以这种方式解决了。

答案 2 :(得分:0)

嘿如果您使用laravel 5.2,这对我有用。

将您的控制器置于'web'中间件中。喜欢,

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',
    ],
];

答案 3 :(得分:0)

您可以尝试使用Session facade。

在顶部..

use Session;

在您的控制器方法中..

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

答案 4 :(得分:0)

只需将变量 $ request 更改为其他变量名称即可。例如 $ requestApp

以下是代码:

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

因为$ request默认属于使用Illuminate \ Http \ Request;