Laravel 5.2 Validierung Fehler nicht angezeigt
Ich versuche Fehler bei der Validierung zu zeigen, bis in Laravel.
Habe ich einen UserController, einrichten, etwa so:
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
//Use Request;
Use Flash;
Use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
public function store(Request $request) {
$this->validate($request, [
'email' => 'required|unique:users|email|max:255',
]);
if($this) {
$input = Request::all();
User::create($input);
return redirect('/');
}
else {
return redirect('/')->withErrors($validator);
}
}
}
In my view (layout.blade.php), ich habe im Lieferumfang enthalten:
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
{{!! $errors !!}}
@endforeach
@endif
Rechnung für die route, die ich habe:
Route::group(['middleware' => ['web']], function () {
Route::get('/', function (){
return view('home');
});
});
Leider, wenn ich "schlechte" Daten, die nicht überprüft werden, ich bin nicht zu sehen, die alle Fehler (aber es wird nicht gespeichert in der db, es gibt also das).
Einer anderen Anmerkung, wenn die blade-template gerendert wird, sehe ich eine zusätzliche "} " - Klammer, die ich bin mir nicht sicher, warum das da ist.
InformationsquelleAutor user1072337 | 2016-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar Dinge, die falsch oder verbessert werden kann hier. Die store-Methode auf der UserController hat viele seltsame Fragen.
$this
wird immer true, weil Objekte sind true in php. Auch, übergeben Sie$validator
inwithErrors
ergibt keinen Sinn, weil es keine variablevalidator
.Den
validate
Methode wirft eineIlluminate\Foundation\Validation\ValidationException
wenn es einen Fehler bei der überprüfung. Diese Ausnahme sollte aufgeführt sein, in der$dontReport
Instanz-variable inApp\Exceptions\Handler
wie unten zu sehen:Wenn Sie diese Werte geändert, entfernt oder geändert
ValidatesRequest
Eigenschaft, die Sie gebrochen haben, kann diese Funktionalität.Ihre Fehler-reporting-code ist nicht korrekt:
Gibt es 3 änderungen hier. Zuerst ich entfernte die äußere Fehler Größe überprüfen, dies nicht wirklich bekommen Sie nichts. Als Nächstes habe ich behoben haben extra
}
Fehler, die syntax für die un-escaping Daten{!! $errors->first() !!}
. Schließlich rief ich->first()
dies gibt den ersten Fehler im Zusammenhang mit diesem bestimmten Feld.Ich denke, es ist wichtig zu beachten, dass die Validierung Ausnahme erstellen einer redirect-Antwort auf der vorherigen Seite. Die Logik für die Ermittlung der vorherigen Seite finden Sie in
Illuminate\Routing\UrlGenerator::previous()
.InformationsquelleAutor Logan Bailey
In laravel 5.2.41-version, die middleware-web geworfen.
Bedeutet das hinzufügen der Routen innerhalb
Route::group(['middleware' => ['web']], function () {
wird die Validierung nicht funktioniert.Dasselbe ist mir passiert. Verbrachte 2 Stunden herauszufinden, mich 🙂
InformationsquelleAutor Mirza Vu
Den Fehler block:
Angenommen, Sie sind mit Bootstrap für die Warnungen.
Sie haben auch nicht
$validator
definiert. Müssen Sie etwas tun, wie dieses:Statt
$this->validate()
.Das sollte es tun.
es nicht funktioniert für mich
InformationsquelleAutor Chris