Próbuję przekierować do poprzedniej strony z komunikatem, gdy wystąpi błąd krytyczny.
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
W widoku próbując uzyskać dostęp do wiadomości za pomocą
Sessions::get('msg')
Ale nic się nie renderuje, czy robię tu coś nie tak?
s
i dodaj wuse
razie potrzeby. Poza tym - powinno działać.Odpowiedzi:
Próbować
i wewnątrz twojego widoku nazwij to
źródło
return Redirect::back()->with('msg', 'The Message');
jak uzyskać tutaj „msg”?Session::has('msg')
Session::has('msg')
a „msg” nie ma.withErrors('some error')
- więc musi być ciągiem zamiast tablicy.Kontroler
Nóż:
źródło
return redirect()->back()->with('success', 'your message here');
Byłoby alternatywne podejście
Kontroler
Widok
źródło
W Laravel 5.4 działały dla mnie:
źródło
withErrors()
sposobu odpowiedź jest tablicą z dwóch elementów:['msg', 'The Message']
. Zobacz api dla akceptowalnych parametrów: laravel.com/api/4.2/Illuminate/Http/ ...withErrors()
metody jest tablica z jednym elementem będącymkey => value
parą, gdzie wartością jest tablica. 5.4 API: laravel.com/api/5.4/Illuminate/Http/…Masz błąd (literówka):
Powinien być:
Myślę, że teraz powinno działać, dla mnie działa.
źródło
Po prostu ustaw wiadomość flash i przekieruj z powrotem z funkcji kontrolera.
Następnie możesz otrzymać wiadomość w pliku widoku bloku.
źródło
{!! Session::get("msg", '') !!}
powinno wystarczyć.get()
już sprawdza, czy klucz istnieje, aw przeciwnym razie zwraca wartość domyślną.W Laravel 5.5 :
W widoku z Blade:
źródło
W laravel 5.8 możesz wykonać następujące czynności:
aw ostrzu:
źródło
Przestałem pisać to sam dla laravel na rzecz pakietu Laracasts, który obsługuje to wszystko za Ciebie. Jest naprawdę łatwy w użyciu i utrzymuje kod w czystości. Jest nawet laracast, który wyjaśnia , jak go używać. Wszystko co musisz zrobić:
Pobierz paczkę przez Composer.
Uwzględnij dostawcę usług w app / config / app.php.
Dodaj alias fasady do tego samego pliku u dołu:
Przeciągnij kod HTML do widoku:
Po prawej stronie wiadomości znajduje się przycisk zamykania. Zależy to od jQuery, więc upewnij się, że zostało dodane przed bootstrapem.
opcjonalne zmiany:
Jeśli nie używasz bootstrapu lub chcesz pominąć dołączanie wiadomości flash i samodzielnie napisać kod:
Jeśli chcesz wyświetlić pobrany kod HTML
@include('flash::message')
, możesz go znaleźć wvendor/laracasts/flash/src/views/message.blade.php
.Jeśli chcesz zmodyfikować części składowe, wykonaj:
Dwa widoki pakietów będą teraz znajdować się w katalogu `app / views / packages / laracasts / flash / '.
źródło
w kontrolerze
Na przykład
w pilniku Wiadomość będzie przechowywana w sesji, a nie w zmiennej.
Na przykład
źródło
Dla Laravel 5.5+
Kontroler:
Nóż:
źródło
Miałem ten sam problem i to zadziałało.
Kontroler
Widok
źródło
Dla laravel 5.6. *
Podczas wypróbowywania niektórych odpowiedzi udzielonych w Laravel 5.6. *, Jasne jest, że pojawiły się pewne ulepszenia, które zamierzam tutaj opublikować, aby ułatwić sprawę tym, którzy nie mogli znaleźć rozwiązania z pozostałymi odpowiedziami.
KROK 1:Przejdź do pliku kontrolera i dodaj to przed zajęciami:
KROK 2: Dodaj to, gdzie chcesz zwrócić przekierowanie.
KROK 3: Przejdź do pliku blade i edytuj w następujący sposób
Następnie przetestuj i podziękuj mi później.
To powinno działać z Laravel 5.6. * I prawdopodobnie 5.7. *
źródło
W przypadku Laravel 3
Tylko ostrzeżenie w odpowiedzi na @giannis christofakis; dla każdego używającego Laravel 3 wymień
z:
źródło
Laravel 5.6. *
Kontroler
Szablon ostrza
Enyoj
źródło
Otrzymałem tę wiadomość, gdy próbowałem przekierować jako:
Kiedy właściwa droga to:
źródło
Laravel 5.8
Kontroler
Nóż
źródło