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

Posted

技术标签:

【中文标题】Laravel 5.2 - 调用未定义的方法 Illuminate\\Support\\Facades\\Request::session()【英文标题】: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; 【参考方案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;

【讨论】:

以上是关于Laravel 5.2 - 调用未定义的方法 Illuminate\Support\Facades\Request::session()的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 单元测试错误:BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::make()

未找到 Laravel 5.2 自定义包路径

Laravel 5.2 中的“PhpDebugBar 未定义”错误

使用 Laravel 5.2 的 PHPUnit 未找到自定义异常

如何修复 Laravel 5.2 中的“未定义变量:子任务”

我正在尝试为 user 和 admin 实现 laravel 5.2 多重身份验证。但是未定义身份验证用户提供程序 [] 错误给出