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 中的“PhpDebugBar 未定义”错误
使用 Laravel 5.2 的 PHPUnit 未找到自定义异常
如何修复 Laravel 5.2 中的“未定义变量:子任务”
我正在尝试为 user 和 admin 实现 laravel 5.2 多重身份验证。但是未定义身份验证用户提供程序 [] 错误给出