2017-06-06 1 views
0

Ich verwende Laravel der form request validation, die ich sehr nützlich finden, und mache meinen Controller viel aufgeräumter.Formular-Anfrage Validierung Rückkehr Fehler mit altem Eingang

Meine komplexeren Validierungsstücke, die, wenn die Validator fehlschlägt, sollten mit der alten Eingabe des Benutzers auf die vorherige Seite zurückkehren.

ich auch manchmal haben einen benannten Fehler Tasche zu spezifizieren, die wiederum scheint nicht als Option auf die Antragsformulare eingebaut zu kommen.

Leider sind diese zusätzlichen Fehlerfunktionen erscheinen standardmäßig nicht mit dem Formular-Anfragen Validator zu kommen.

Im Moment habe ich:

$validator = Validator::make($request->all(), [ 
    'id' => 'required|numeric', 
    'name' => 'required|alpha_spaces', 
    'email' => 'required|email', 
]); 

if ($validator->fails()) { 
    return back() 
     ->withErrors($validator, 'aNamedErrorBag') 
     ->withInput(); 
} 

Gibt es eine Möglichkeit, die Regeln in eine Anforderungs-Validator-Datei zu extrahieren, und kehren mit Eingabe in den genannten Fehler Tasche aNamedErrorBag, ausfallen sollte der Prüfer?

Vielen Dank

Antwort

0

Die FormRequest Klasse jongliert den Namen des Fehler Tasche als Eigenschaft:

/** 
* The key to be used for the view error bag. 
* 
* @var string 
*/ 
protected $errorBag = 'default'; 

Sie können diesen Wert auf die errorBag ändern, die Sie die Fehler wollen gesendet werden. Fügen Sie es einfach Ihrer Eigenschaft als benutzerdefinierte Eigenschaft hinzu.

bearbeiten

Dies ist, was die FormRequest auf die Validierung Fehler zurückgibt:

/** 
* Get the proper failed validation response for the request. 
* 
* @param array $errors 
* @return \Symfony\Component\HttpFoundation\Response 
*/ 
public function response(array $errors) 
{ 
    if ($this->expectsJson()) { 
     return new JsonResponse($errors, 422); 
    } 

    return $this->redirector->to($this->getRedirectUrl()) 
            ->withInput($this->except($this->dontFlash)) 
            ->withErrors($errors, $this->errorBag); 
} 
+0

Excellent! Danke @ Ohgodwhy. Wird die alte Eingabe des Benutzers standardmäßig zurückgegeben? – Ben

+1

@Ben Yup. Ich habe die Funktion hinzugefügt, die die FormRequest-Validierungsdaten bei Fehler an die Antwort zurückgibt. – Ohgodwhy

+0

Noch besser. Danke nochmal Ohgodway :) – Ben

Verwandte Themen