#laravel #session
#laravel #сеанс
Вопрос:
Я нашел несколько связанных вопросов, но у них недостаточно объяснений / решений для моей проблемы. Я интегрирую платежный шлюз Paycorp с существующим проектом. В PaymentController.php Я помещаю все настройки IPG отеля в массив и помещаю в сеанс. Как только я помещаю его в сеанс, я пытаюсь распечатать его с помощью vardump, он работает, он находится в сеансе! Затем я инициирую платеж и перенаправляю на сгенерированный URL. Он перенаправляет на платеж Paycorp, я предоставляю данные карты и отправляю. Когда он возвращается к PaymentCompleteController.php Мне нужно завершить платеж, и мне нужны настройки IPG отеля, которые я ввел в сеанс. Когда я попытался его получить, ничего нет, и оно равно NULL.
PaymentController.php
$params['something1'] = $something1;
$params['something2'] = $something2;
$params['something3'] = $something3;
$params['something4'] = $something4;
Session::put(SampleModel::PARAMS, $params);
//At this point Params are in the session
//var_dump(Session::get(SampleModel::PARAMS)); exit();
//Initiate Payment and Redirect to URL
Как только данные карты будут предоставлены и отправлены, они будут перенаправлены обратно на
PaymentCompleteController.php
vardump(Session::get(SampleModel::PARAMS)); exit();
В PaymentCompleteController.php переменная сеанса равна нулю. Но переменная, помещенная перед PaymentController.php все еще существуют.
Ответ №1:
Когда запускается жизненный цикл приложения Laravel, любое значение, введенное в сеанс, еще не сохраняется до завершения жизненного цикла приложения. Перенаправление предотвращает это.
Сохраняйте значения сеанса сразу после вызова put()
:
Session::put(SampleModel::PARAMS, $params);
Session::save();
Комментарии:
1. Спасибо, теперь это работает! Работая над Laravel более 8 месяцев, я никогда не сталкивался с этой проблемой! Также я ценю вас за объяснение.