2016-07-31 10 views
2

ich AJAX verwenden, um meine Anfrage zu senden, und ich will Fehler in besonderer Weise zu formatieren (noch obwohl JSON. Ich möchte Datenstruktur Fehler zu ändern und einige Flags, um es hinzuzufügen)Laravel - Kann ich die Validator-Instanz im Controller erneut verwenden?

So einfach würde, da anscheinend $this->validate drucken Fehler ohne meine Erlaubnis aus! Und ich habe keine Kontrolle darüber, ich habe statisch verwenden Methode des Validator

$whitelist = [ 
    'title'=>'required', 
    'slug'=>'present' , 
    'text'=>'present' 
]; 

$validation = Validator::make($request->all(), $whitelist); 
if($validation->fails()) 
{ 
    format_output_likeIwant($validation->messages()->messages()); 
} 

$another_whitelist = [ 
    'some_other_info'=>'required', 
]; 

Nur aus Neugier, ist es für mich eine Möglichkeit, meine $another_whitelist mit meiner vorhandenen Instanz zu bestätigen? Oder sollte ich für jede Liste eine neue Instanz des Validators erstellen?

Übrigens, weil ich zwei verschiedene Validierungs-Arrays habe, verwende ich diese Whitelists/Arrays, um meine Modellinstanz vor dem Speichern/Aktualisieren in der Datenbank aufzufüllen und zu vermeiden, viel zusätzlichen Code im Falle großer Tabellen zu schreiben. 2 Liste gehören hier zu verschiedenen Modell/Tabellen (see here for example)

Ich habe in der Laravel Dokumentation sah, es allen Beispielen scheint einzelne Validierungsliste

Antwort

3

Es klingt übernehmen, wie Sie Validator::after() oder Validator::mergeRules() verwenden möchten. Probieren Sie es aus:

public function index(Request $request) 
{ 
    $mainRules = [ 
     'title'=>'required', 
     'slug'=>'present' , 
     'text'=>'present' 
    ]; 

    /** @var \Illuminate\Validation\Validator $validation */ 
    $validation = Validator::make($request->all(), $mainRules); 

    if ($validation->fails()) { 
     //do something 
    } 

    $additionalRules = [ 
     'author' => 'required' 
    ]; 
    $validation->mergeRules($additionalRules); 

    # validates $mainRules and $additionalRules together... 
    dump(($validation->fails())); 
} 
+0

danke, ich weiß nicht, warum MergRules nicht in der Dokumentation erwähnt wird! – max

+0

@max Ja, ich habe mich daran gewöhnt. Zu viele Funktionen sind ausgeblendet. – felipsmartins

Verwandte Themen