В настоящее время я пытаюсь реализовать способ записи данных сеанса аналогично тому, как Laravel занимается данными флэш-памяти. Я знаю, что Laravel переопределяет собственные методы сеанса, вызываемые такими функциями, как session_start.Как Laravel отключил данные флеш-сессии?
Они, кажется, делают это с Http foundation
пакета Symfony путем создания пользовательских методов для open
, read
, write
и т.д. для сессии. Это делается с помощью session_set_save_handler
:
http://php.net/manual/en/function.session-set-save-handler.php
С помощью этой функции можно реализовать открытую логику при запуске сеанса или сеанс получает запись. Но пока я не могу найти прямую логику в кодовой базе Laravel, где данные флэш-памяти не установлены.
Было бы целесообразно отключить данные вспышки прямо перед функциональностью сессии write
. Таким образом, вы можете отключить его для будущих запросов и будете уверены, что это произойдет только при завершении вашего кода.
Может ли кто-нибудь сказать мне, как Laravel занимается сессионными флэш-сообщениями?
Как насчет того, когда выполняются запросы или переадресации ajax? Будет ли Laravel также перемещать данные вспышки в старые или есть чеки для этого? Я думаю, вы можете получить нежелательное поведение, если что-то вроде ajax-запроса или перенаправления приводит к тому, что данные флэш-памяти будут отменены. –
При вызове ajax данные флэш-памяти перемещаются в _flash.old. вы можете увидеть это в промежуточном программном обеспечении StartSession. Если вы хотите сохранить данные флэш-памяти для следующего запроса, вы можете использовать метод 'reflash' –