20

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

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

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

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

如何解决?

4

5 回答 5

21

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

如果您只想要$request您想要使用的实例Illuminate\Http\Request

有点像您正在注入 Facade。

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

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

于 2015-12-30T02:23:28.513 回答
17

试着把它放在你的文件开头:

use Illuminate\Http\Request;

我有同样的问题并以这种方式解决。

于 2017-10-07T21:14:30.337 回答
0

只需将您的变量$request更改为另一个变量名。例如$requestApp

这是代码:

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

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

于 2016-08-15T15:35:02.413 回答
0

您可以尝试使用这样的 Session 外观。

在顶端..

use Session;

在您的控制器方法中..

if (Session::has('username')) {
    return view('dashboard');
}
于 2016-05-23T06:46:46.537 回答
0

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

将您的控制器放在“网络”中间件中。喜欢,

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',
    ],
];
于 2015-12-30T19:59:22.253 回答