2016-04-08 8 views
0

Ich bin wahrscheinlich über Dinge komplizieren, wo es nicht benötigt wird, aber ich habe ein Formular, das über AJAX eingereicht und dann validiert. Ich versuche, den ersten Fehler, der auftritt, zurückzugeben, aber ich kann nur scheinen, validation.required zu holen, das natürlich für mich nutzlos ist; Ich kann dem Benutzer nicht sagen, welches Feld fehlgeschlagen ist, und ich kann auch keine entsprechende Fehlermeldung übersetzen.Validierung - Zurücksenden des ersten Fehlers für eine AJAX Antwort

Was gibt? Wie kann ich eine benutzerfreundliche Fehlermeldung abrufen und sie als JSON-Antwort zurückgeben?

Hier ist, was ich bisher habe gehen ... Der größte how-do-I abruft den Attributnamen für die Fehlermeldung, aber vielleicht ist es ein viel einfacher Weg, dies überhaupt zu verwalten ...

/** 
* Adds a new post to the system 
* 
* @param Request $request 
* @return json 
*/ 
public function store(Request $request) 
{ 
    // run validation 
    if(!empty($validator = $this->validate($request))) 
    { 
     return response()->json(trans('global/'.$validator->first(), ['attribute' => 'how to get attribute?!?!']), 400); 
    } 

    // some other logic... 
} 


/** 
* Validates a post add or post update request 
* 
* @access private 
* @param Request $request 
* @return mixed 
*/ 
private function validate(Request $request) 
{ 
    // set-up validation rules 
    $validator = Validator::make($request->all(), [ 
     'username'  => 'max:255|required', 
     'email'   => 'email', 
     'service'  => 'numeric|required', 
    ]); 

    $validator->setAttributeNames([ 
     'username'  => "Username", 
     'service'  => "Service", 
    ]); 

    // run validation 
    if($validator->fails()) 
    { 
     return $validator->errors(); 
    } 

    return true; 
} 

Antwort

0

Benutzen Sie den Code oben in Ihrem Controller store Methode und nicht außer Kraft validate Methode:

$rules  = [ 
     'username' => 'max:255|required', 
     'email' => 'email', 
     'service' => 'numeric|required', 
    ]; 
    $attributes = [ 
     'username' => "Username", 
     'service' => "Service", 
    ]; 
    $this->validate($request, $rules, [], $attributes); 

Es wird automatisch wieder Fehler json, wenn die Validierung fehlschlägt.
Fehlerbeispiel:

{"username":["The Username field is required."],"service":["The Service field is required."]} 
Verwandte Themen