Почему мой сеанс Laravel 5.7 не работает? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь заставить сеансы работать в Laravel 5.7, но я не могу заставить его работать;Я не уверен почему.Я просмотрел официальные документы, просмотрел кучу сообщений SO, сделал поиск в Google для решения проблемы на других сайтах, и до сих пор не могу понять это.

По сути, у меня есть маршруткак в web.php:

Route::get('/some_path', 'SomeController@index');

Затем, в index методе SomeController, у меня есть следующее:

session(['test', 'Some Value']);
session(['test2', 'Some Other Value']);
session(['test3', 'Some Third Value']);
$value = session('test', 'Backup Value');
echo $value;

С этим яна экран всегда выводится Backup Value.

Если перейти к /storage/framework/sessions, я вижу файл сеанса, который имеет следующее содержимое (которое я анонимизировал):

a:5:{s:6:"_token";s:40:"token-here";s:9:"_previous";a:1:{s:3:"url";s:26:"http://example.com/some_path";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}i:0;s:5:"test3";i:1;s:16:"Some Third Value";}

По сути, похоже, что сессия работает, но она хранит только test3.Если я закомментирую строку test3 в контроллере, то она будет хранить только test2.И даже если у меня есть только строка test в контроллере, он все равно не получает значение.

Я также попытался переключить сеанс на сеанс БД с подходящим файлом переноса сеанса а-ля https://laravel.com/docs/5.7/session, но он все еще не работает.

В принципе, я понятия не имею, что случилось.Я могу сказать, что я не использую собственную аутентификацию Laravel, поэтому я не уверен, имеет ли это значение, но я чувствую, что это не должно.Кроме того, я попытался перезапустить свой локальный хост, но это не имело значения и запустил обе следующие команды, ни одна из которых, кажется, ничего не меняет:

php artisan config:clear
php artisan route:clear

Наконец, я попытался добавить use Session вверхняя часть контроллера, но это тоже не имеет значения.

В принципе, я не знаю, что делать.Что может быть причиной этого?Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Laravel 5.7 - сохранить значение в сеансе с файловой системой:

Установить значение в сеансе:

session()->put('email', 'jai@gmail.com');

Получить значение из сеанса:

$email = session()->get('email');

Удалить сеанс электронной почты:

session()->forget('email');

Работает как шарм:)

0 голосов
/ 19 февраля 2019

Здесь происходит следующее:

session(['test', 'x'])

Добавляется test в 0th индексе сеанса и x на 1-й .Теперь, когда вы снова делаете

session(['test1', 'xx'])
, он перезаписывает 0-й и 1-й индекс сеанса новыми значениями.Поэтому, когда вы печатаете данные сеанса, вы получаете последние значения.Вы можете проверить это, выполнив dd(session()->all()) и увидев то же самое на экране.Если вы хотите установить отношение ключ-значение и сохранить данные в таком месте, используйте следующий синтаксис:
session(['test' => 'x']);
session(['test1' => 'xx']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...