Я сейчас в замешательстве. У меня есть приложение Laravel/Inertia/Vue, которое я пытаюсь Dockerize. Однако у меня проблема с флэш-сессией, которую я использую. У меня есть контроллер со следующим методом:
public function testMethod()
{
session()->put("success", "message1");
return back()->with("testMessage", "message2");
}
Когда мой компонент в Vue монтируется, я вызываю конечную точку, которая, в свою очередь, вызывает эту функцию с помощью адаптера $inertia.
mounted() {
this.$inertia.post("/testEndpoint", {});
}
Я использую промежуточное программное обеспечение HandleInertiaRequests.php, как предложено в документации Inertia JS. Я определил метод общего доступа следующим образом:
public function share(Request $request): array
{
return array_merge(parent::share($request), [
"flash" => function () {
return [
"testMessage" => session()->get("testMessage"),
"success" => session()->get("success"),
"error" => session()->get("error"),
"status" => session()->get("status"),
"data" => session()->get("data")
];
},
]);
}
Когда я обновляю страницу и вызываю конечную точку, я получаю в ответ следующий объект:
{
"component": "Landing",
"props": {
"flash": {
"testMessage": null,
"success": "message1",
"error": null,
"status": null,
"data": null
},
},
"url": "/",
"version": "0f37ca5b6d996b9ca5092f1730b72791"
}
То есть сеансовый ключ «успеха» работает должным образом, но не «testMessage», созданный с помощью().
Я использую Laravel 10.39 и Inertia-laravel 0.6.9.
Спасибо за помощь!
Самое странное, что это работало до прошлой недели, и я не думаю, что с тех пор внес изменения, которые могли бы сломать приложение. Я даже пытался вернуться к предыдущей версии Git и пересобрать приложение, но теперь у меня та же проблема, которой раньше не было.
Я попытался очистить кеш приложения Laravel и не изменил содержимое/порядок своих промежуточных программ.
Эта ошибка появилась после того, как я пересобрал свои контейнеры, чего давно не делал. На прошлой неделе я немного поигрался с разрешениями для моих файлов-контейнеров. Может ли это быть причиной?






После нескольких дней расследования я наконец понял, что пошло не так! Это ошибка установленной мной панели отладки Laravel. Недавно вышла версия 3.13.0, вызывающая такое поведение; если я вернусь к 3.12.4, все будет работать нормально. Я сообщу о проблеме в репозитории пакета на GitHub.
При добавлении dd(session()->isStarted()); к моему методу контроллера я получаю false. Я думаю, этого не ожидается, верно?