2017-04-12 3 views
0

Ich habe ein Problem bei der Validierung von Eingaben, die nur manchmal in der Anfrage vorhanden sein werden.Laravel 5.4 manchmal | erforderliche Validierung nicht auf "Null" Eingang

Also in einigen Update-Seiten $ request-> all() wird nur eine Teilmenge dieser Felder haben. Es ist jedoch auch ein Feld vorhanden, aber der Wert ist null, das erforderliche wird nicht ausgelöst.

[ 
    'first_name' => null, 
    'last_name' => 'Davidson', 
    'job_title' => 'Tech Support', 
] 

Die obige Anfrage Array wird wieder „OK“ ... Wenn ich aus den Bereichen manchmal entfernen, dann, wenn eine Teil-Eingabeanforderung gesendet wird, schlägt es zu sagen die Felder erforderlich sind.

Ich Clearing hier etwas fehlt, aber in der Dokumentenlese ich dachte, dass ich das richtig konfiguriert hatte:

In manchen Situationen können Sie nur Validierungsprüfungen gegen eine Feld ausführen möchten, wenn das Feld ist in der Eingabeanordnung vorhanden. Um schnell dies zu erreichen, fügen Sie manchmal das zu Ihrer Regelliste entscheiden:

$ v = Validator :: macht ($ data [ 'E-Mail' => 'manchmal | erforderlich | E-Mail',]);

Antwort

2

Das Problem, das Sie konfrontiert sind, ist einfach aufgrund eines Fehlers in Ihrem Anruf an den Validator. Der zweite Parameter ist kein mehrdimensionales Array. Das Regelarray und das Nachrichtenarray sind separate Parameter.

$validation = Validator::make($request->all(), [ 
    $this->validation['rules'], 
    $this->validation['messages'], 
]); 

Sollte wie erwartet von

$validation = Validator::make($request->all(), 
     $this->validation['rules'], $this->validation['messages']); 
+0

Das ist, was ich an Stackoverflow lieben ... Ein Extra Reihe von Augen. Das hat mich ernsthaft in den Wahnsinn getrieben. Ich weiß nicht wirklich, wie das Array dort hingekommen ist, es muss Muskelerinnerung sein, um die Regeln aufzubauen. Gute Abholung! Danke noch einmal. – Trent

1

In Laravel 5.4 leeren Saiten zu Null durch die ConvertEmptyStringsToNull Middleware konvertiert werden ..., dass Sie einige Probleme verursachen könnten ...

Sie sollten auf alle Ihre optional Validierungen nullable hinzufügen ...

Hoffe, dies hilft

+0

Ich denke, ein Link zu den Dokumenten ist in Ordnung: https://laravel.com/docs/5.4/validation#a-note-on-optional-fields – anakadote

0
'first_name' => [ 
     'sometimes', 
     'required', 
    ], 

Wird nie ersetzt werden arbeiten. Manchmal deutet sich an: Wenn etwas kommt, was ist die nächste Regel? In diesem Fall "erforderlich". Was benötigt? Ändern Sie diesen Wert wie folgt:

Der Nullwert ist immer noch ein Nullwert, wenn keine Eingabe erfolgt und kein Fehler auftritt. Wenn Sie den Wert des Feldes in der Tabelle für Aktualisierungen beibehalten möchten, füllen Sie die Eingabe im Formular mit den entsprechenden Werten aus.

Der Nullwert wurde als '' gesendet und durch die ConvertEmptyStringsToNull::class in der App \ Http \ kernel.php Middleware nulled.

+0

Die Regeln manchmal und erforderlich sind ein perfekt gültiges Szenario. Es sagt: "Wenn ein Feld vorhanden ist, dann darf es nicht null oder leer sein" –

Verwandte Themen