Próbuję zaimplementować niestandardowe wiadomości flash i mam problemy z niszczeniem danych sesji po przekierowaniu.Dane sesji nie zostały zachowane po przekierowaniu.
Oto sposób tworzę moje wiadomości lampy błyskowej:
flash('Your topic has been created.');
Oto deklaracja funkcji flash()
:
function flash($message, $title = 'Info', $type = 'info')
{
session()->flash('flash', [
'message' => $message,
'title' => $title,
'type' => $type,
]);
}
A oto jak ja sprawdzanie sesji/wyświetlanie wiadomości bezpośrednie, używając SweetAlerts. Ten kod znajduje się u dołu głównego pliku układu, który rozwijam we wszystkich szablonach Blade.
@if(Session::has('flash'))
<script>
$(function(){
swal({
title: '{{ Session::get("flash.title") }}',
text : '{{ Session::get("flash.message") }}',
type : '{{ Session::get("flash.type") }}',
timer: 1500,
showConfirmButton: false,
})
});
</script>
@endif
Powyższy kod będzie działać, jeśli I wywołać funkcję flash()
przed wyświetleniem widoku, tak jak poniżej:
public function show($slug)
{
flash('It works!');
return view('welcome');
}
Jednak to nie będzie działać, jeśli zgłoszę go przed wykonaniem przekierowanie do innej strony , tak:
public function show($slug)
{
flash('It does not work');
return redirect('/');
}
Dlaczego dane sesji zostały utracone podczas przekierowania? Jak mogę sprawić, aby był on wyświetlany, aby móc wyświetlić moją wiadomość flash?
Czy możesz sprawdzić adresy URL przed i po przekierowaniu? Czasem jesteś w domenie z 'www.'' i przekierowujesz do domeny bez' www.' iw tym przypadku nie zobaczysz sesji –