Es war viele Monate her, seit ich Laravel benutze, aber ich hatte nie ein solches Problem.
Ich habe eine einfache Request-Klasse erstellt, um die Aktualisierungsbenutzeranforderung zu validieren, die funktioniert, wenn Validierungsregeln befolgt werden. Wenn die Validierungsregel fehlschlägt, sollten wir zur vorherigen Seite zurückkehren und alle Fehler in html anzeigen.
Laut mir habe ich alles korrekt geschrieben, wie ich es in anderen Anwendungen geschrieben habe, aber scheint $errors
in Blade nicht verfügbar zu sein
Im Folgenden sind meine erforderlichen Code-Snippets zum Debuggen:
routes.php
%Vor%UserController.php
%Vor%UserUpdateRequest.php
%Vor%edit.blade.php
%Vor% Die HTML-Antwort im Browser ist leer.
Ich habe auch <?php dd($errors); ?>
ausprobiert, was folgendes anzeigt:
Weitere Informationen hier
@VipindasKS hat Recht mit seiner Annahme. Seit Laravel Version 5.2.28 ist die Web-Middleware über die Methode RouteServiceProviders in allen Routen enthalten:
%Vor%Seit dieser Version enthält Laravels Standard routes.php nur noch:
%Vor%Wenn Sie also von einer früheren Version mit einer Datei routes.php upgraden:
%Vor%Ihre Anwendung wird einfach funktionieren, weil Sie bei einem Composer-Update Ihren RouteServiceProvider nicht berühren (er fügt die mapWebRoutes () -Methode nicht hinzu). Die Middleware "web" wird also nur den Routen innerhalb der Gruppe "web" hinzugefügt.
Allerdings, wenn Sie eine neue Installation von Laravel (derzeit 5.2.29) ziehen und eine routes.php mit
haben %Vor%Der Web-Middleware-Stack wird den Routen zweimal hinzugefügt. Sie können dies überprüfen über:
%Vor%Was zeigen wird, dass die 'Web' Middleware zweimal hinzugefügt wird:
%Vor%Dies bricht die Flash-Variablen der Sitzung, da sie normalerweise nur während eines einzigen Sitzungslebenszyklus andauern sollen.
Also ist die Lösung:
Verwenden Sie nicht die Middleware-Gruppe "web" in der Datei routes.php, wenn Sie zog eine neue Instanz von Laravel.
Sie können die Verwendung von withErrors redirect verwenden, falls die Validierung fehlschlägt.
%Vor%Überprüfen Sie auch
%Vor%gibt es in 'Web' Middleware in app / Http / Kernel.php
also sollte Ihre kernel.php ungefähr wie folgt aussehen:
%Vor%Wenn das auch nicht funktioniert, können Sie das
verschieben %Vor%zur globalen Middleware. (nur um es zu versuchen. Ich werde nicht vorschlagen)
** Stellen Sie sicher, dass Sitzungen funktionieren. Um Fehler zurück zu erhalten oder Nachrichten an den Browser zu senden, muss eine Sitzung ausgeführt werden.
Ab 5.2 starten Sitzungen nur, wenn Sie angeben, dass die Route die Middleware "web" verwenden soll (was in der Datei routes.php bereits von Ihnen erledigt wurde).
Und ab dem 5.2.28 ist die Web-Middleware automatisch in allen Routen enthalten. Sie können dies im RouteServiceProvider . Daher möchten wir keine "Web" -Middleware für die routes.php oder im Controller angeben, es sei denn, wir haben eine benutzerdefinierte Middleware. Aber, nicht sicher, dass dies das Problem verursacht.
Tags und Links php laravel-5.2