【问题标题】:Laravel 5.2 - Call to undefined method Illuminate\Support\Facades\Request::session()Laravel 5.2 - 调用未定义的方法 Illuminate\Support\Facades\Request::session()
【发布时间】:2016-04-03 18:30:43
【问题描述】:

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

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

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

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

如何解决?

【问题讨论】:

  • 确保添加use Illuminate\Http\Request;

标签: session laravel-5.2


【解决方案1】:

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

如果你只想要$request 实例,你会想使用Illuminate\Http\Request

看起来你正在注入 Facade。

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

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

【讨论】:

  • 它在控制器上。我已经在顶部定义了使用 Illuminate\Http\Request。但是会话的 has() 方法不起作用。
  • 该错误意味着注入了错误的类。因此,除非您帖子中的错误得到解决,否则您甚至无法拨打has 电话。
【解决方案2】:

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

use Illuminate\Http\Request;

我遇到了同样的问题,就这样解决了。

【讨论】:

    【解决方案3】:

    嘿,如果您使用的是 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',
        ],
    ];
    

    【讨论】:

    • 我也是这样做的。但我想我解决了这个问题。我的问题是,我无法使用$request->session->has('key')。问题是我刚刚创建了像 session('key') 这样的会话。但如果我使用$request->session()->put('key', 'value');,那么它可能会起作用!
    • 给你..你发现你的问题...;)
    • 对。但无论如何,谢谢。 :)
    【解决方案4】:

    你可以试试这样的 Session 外观。

    在顶部..

    use Session;
    

    在你的控制器方法中..

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

    【讨论】:

      【解决方案5】:

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

      代码如下:

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-15
        • 2020-01-24
        • 2019-03-04
        • 2019-05-14
        • 2021-10-29
        相关资源
        最近更新 更多