我在Laravel 5.2中使用会话,这是我的控制器代码:
if ($request->session()->has('username')) {
return view('dashboard');
}
我需要使用session,并收到此错误:
HomeController.php第21行中的FatalErrorException:调用undefined 方法Illuminate \ Support \ Facades \ Request :: session()
如何解决?
答案 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;