Laravel 5.2 - Вызов неопределенного метода Illuminate\Support\Facades\Request::session()

Я использую сеанс в Laravel 5.2, и вот мой код контроллера:

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

Мне нужно использовать сеанс и получить эту ошибку:

FatalErrorException в строке 21 HomeController.php: вызов неопределенного метода Illuminate\Support\Facades\Request::session()

Как это решить?


person Honest Knight    schedule 29.12.2015    source источник
comment
не забудьте добавить use Illuminate\Http\Request;   -  person Connor Leech    schedule 20.12.2016


Ответы (5)


Не уверен, откуда у вас $request, но, скорее всего, вы вводите неправильный тип.

Если вам просто нужен экземпляр $request, вы бы хотели использовать Illuminate\Http\Request

Похоже, вместо этого вам вводят Facade.

Request (в корневом пространстве имен) — это фасад с псевдонимом.

Illuminate\Http\Request - это фактический класс запроса, экземпляр которого вам нужен.

person lagbox    schedule 30.12.2015
comment
Ну это на контроллере. Я уже определил использование Illuminate\Http\Request вверху. Но метод сеанса has() не работает. - person Honest Knight; 30.12.2015
comment
эта ошибка означает, что вводится неправильный класс. поэтому, если эта ошибка в вашем сообщении не будет устранена, вы даже не доберетесь до вызова has. - person lagbox; 30.12.2015

Попробуйте поместить это в начало файла:

use Illuminate\Http\Request;

У меня была такая же проблема, и я решил это так.

person Marcelo Agimóvel    schedule 07.10.2017

Эй, если вы используете 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',
    ],
];
person Cowboy    schedule 30.12.2015
comment
Я сделал то же самое. Но, думаю, я разобрался с проблемой. Моя проблема заключалась в том, что я не мог использовать $request->session->has('key'). Проблема была в том, что я только что создал сеанс, например session('key') . Но если бы я использовал $request->session()->put('key', 'value');, тогда это могло бы сработать! - person Honest Knight; 30.12.2015
comment
Вот вы и нашли свою проблему проблемы... ;) - person Cowboy; 30.12.2015
comment
Верно. Но все равно Спасибо. :) - person Honest Knight; 31.12.2015

Вы можете попробовать с таким фасадом сеанса.

На вершине..

use Session;

В вашем методе контроллера..

if (Session::has('username')) {
    return view('dashboard');
}
person Parvez Rahaman    schedule 23.05.2016

просто измените свою переменную $request на другое имя переменной. например $requestApp.

Вот код:

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

потому что $request по умолчанию принадлежит Illuminate\Http\Request;

person alexanderarda    schedule 15.08.2016