Request Fehler nicht in Blade (Laravel 5.2)

9

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:

%Vor%

Weitere Informationen hier

    
Cybersupernova 11.04.2016, 20:48
quelle

2 Antworten

3

@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.

    
shock_gone_wild 18.04.2016, 10:46
quelle
1

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.

    
VipindasKS 15.04.2016 10:50
quelle

Tags und Links