Ich mache meine erste App in Laravel und versuche, mich mit den Flash-Nachrichten der Sitzung vertraut zu machen. Soweit mir in meiner Controller-Aktion bekannt ist, kann ich entweder eine Flash-Nachricht setzen, indem ich gehe
Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?
Für den Fall der Umleitung auf eine andere Route oder
Session::flash('message', 'This is a message!');
In meiner Master Blade-Vorlage hätte ich dann:
@if(Session::has('message'))
<p class="alert alert-info">{{ Session::get('message') }}</p>
@endif
Wie Sie mir Bootstrap haben bemerkt , können 3 in meiner app bin mit und möchte Verwendung der verschiedenen Nachrichtenklassen machen: alert-info
, alert-warning
,alert-danger
usw.
Angenommen, ich weiß in meinem Controller, welche Art von Nachricht ich einstelle, wie kann ich sie am besten übergeben und in der Ansicht anzeigen? Sollte ich in der Sitzung für jeden Typ eine eigene Nachricht festlegen (zSession::flash('message_danger', 'This is a nasty message! Something's wrong.');
)? Dann benötige ich für jede Nachricht in meiner Blade-Vorlage eine separate if-Anweisung.
Jeder Rat geschätzt.
Antworten:
Eine Lösung wäre, zwei Variablen in die Sitzung zu flashen:
beispielsweise:
Dann aus Ihrer Sicht:
Hinweis Ich habe einen Standardwert in die eingegeben
Session::get()
. Auf diese Weise müssen Sie es nur überschreiben, wenn die Warnung etwas anderes als diealert-info
Klasse sein soll.(das ist ein kurzes Beispiel und ungetestet :))
quelle
Session::get()
Das wird sehr praktisch sein.Aus Ihrer Sicht:
Stellen Sie dann eine Flash-Meldung in der Steuerung ein:
quelle
Mein Weg ist immer Redirect :: back () oder Redirect :: to ():
Ich habe eine Hilfsfunktion, damit es für mich funktioniert. Normalerweise befindet sich diese in einem separaten Dienst:
Und aus meiner Sicht oder meinem Layout mache ich es einfach
quelle
$type = $type == 'error' : 'danger';
Sie können mehrere Nachrichten mit unterschiedlichen Typen erstellen. Befolgen Sie diese Schritte unten:
app/Components/FlashMessages.php
"app/Http/Controllers/Controller.php
".Dadurch wird das
FlashMessages
Merkmal allen Controllern zur Verfügung gestellt, die diese Klasse erweitern.views/partials/messages.blade.php
"boot()
" Methode von "app/Providers/AppServiceProvider.php
":Dadurch wird die
$messages
Variable beiviews/partials/message.blade.php
jedem Aufruf der Vorlage " " zur Verfügung gestellt .views/partials/messages.blade.php
"Sie müssen die Nachrichtenvorlage nur dort einfügen, wo Sie die Nachrichten auf Ihrer Seite anzeigen möchten.
Hoffe es wird dir helfen.
quelle
Kehren Sie einfach mit dem 'Flag' zurück, das Sie behandeln möchten, ohne eine zusätzliche Benutzerfunktion zu verwenden. Der Controller:
Beachten Sie, dass ich das Flag 'Erfolg' verwendet habe.
Die Aussicht:
Ja, es funktioniert wirklich!
quelle
Eine andere Lösung wäre das Erstellen einer Hilfsklasse. So erstellen Sie hier Hilfsklassen
Dann können Sie dies tun.
oder
und aus Ihrer Sicht
quelle
Kein großer Fan der angebotenen Lösungen (dh: mehrere Variablen, Hilfsklassen, Schleifen durch "möglicherweise vorhandene Variablen"). Im Folgenden finden Sie eine Lösung, bei der stattdessen ein Array anstelle von zwei separaten Variablen verwendet wird. Es ist auch leicht erweiterbar, um mehrere Fehler zu behandeln, falls Sie dies wünschen. Der Einfachheit halber habe ich es auf eine Flash-Nachricht beschränkt:
Umlenken mit Flash - Mitteilung Array :
Ausgabe basierend auf Array-Inhalt:
Unabhängig davon, da Sie möglicherweise über eine eigene Benachrichtigungsmethode / ein eigenes Benachrichtigungs-Plugin verfügen - aber nur aus Gründen der Übersichtlichkeit - dient bootstrapNotify lediglich zum Starten der Bootstrap-Benachrichtigung von http://bootstrap-notify.remabledesigns.com/ :
quelle
Für meine Anwendung habe ich eine Hilfsfunktion erstellt:
Nachrichtenlayout ,
main.layouts.message
:und importiere jeden Ort, an dem die Nachricht angezeigt werden soll:
quelle
Normalerweise mache ich das
In meiner store () -Funktion setze ich eine Erfolgswarnung, sobald sie richtig gespeichert wurde.
In meiner Funktion destroy () wollte ich die Warnung rot färben, um zu benachrichtigen, dass sie gelöscht wurde
Beachten Sie, dass wir zwei Warnungen mit unterschiedlichen Flash-Namen erstellen.
Und meiner Ansicht nach werde ich die Bedingung hinzufügen, wann der richtige Alarm zum richtigen Zeitpunkt aufgerufen wird
Hier finden Sie verschiedene Flash Message Stlyes Flash Messages in Laravel 5
quelle
Sie könnten Laravel-Makros verwenden.
Sie können erstellen
macros.php
inapp/helpers
routen.php und einschließen.Wenn Sie Ihre Makros stattdessen in eine Klassendatei einfügen möchten, können Sie sich dieses Tutorial ansehen: http://chrishayes.ca/blog/code/laravel-4-object-oriented-form-html-macros-classes-service- Anbieter
In Ihrem Controller:
In Ihrer Ansicht
quelle
Ich denke, dass das Folgende mit weniger Codezeilen gut funktionieren würde.
Ich verwende ein Toasterpaket, aber Sie können so etwas aus Ihrer Sicht haben.
quelle
Im Controller:
Oder
in Blade show message in Blade As ur Gewünschtes Muster:
quelle
Senden Sie einfach ein Array in der Sitzung und nicht wie folgt:
quelle
Ich bin auf diese elegante Art gestoßen, Nachrichten zu flashen. Es wurde von Jeffrey Way aus Laracast hergestellt. Probieren Sie es aus ... https://github.com/laracasts/flash
quelle
Wenn Sie Bootstrap Alert verwenden möchten, um Ihre Ansicht interaktiver zu gestalten. Sie können so etwas tun:
In Ihrer Funktion: -
In Ihren Ansichten: -
quelle