In der Regel werden Attributnamen und Fehlermeldungen für die Validierung von Formularen in Laravel ja in den Sprachdateien gespeichert z.B. resources/lang/CODE/validation.php
Die Controller-eigene validate() Methode sowie Validator::make() können jedoch auch mit zusätzlichen Parametern aufgerufen werden, um diese Übersetzungen punktgenau zu überschreiben.
Für die Fehlermeldungen an sich ist das auch gut dokumentiert:
https://laravel.com/docs/5.8/validation#custom-error-messages
1 2 3 4 |
// custom error messages $messages = [ 'name.required' => 'Das Feld Name ist ein Pflichtfeld' ]; |
Die Validierung sieht dann so aus:
1 2 |
// validate with custom message $this->validate($request, $rules, $messages); |
Was aber, wenn einzelne Attribut-Bezeichner in der Übersetzung gar nicht definiert sind, weil diese z.B. nur einmalig benutzt werden? Hier kommt der vierte Parameter ins Spiel, der vom Aufbau her genauso funktioniert wie $messages .
1 2 3 4 5 6 7 |
// define custom translation for attributes $attributes = [ 'firstname' => 'Vorname', 'lastname' => 'Nachname' ]; $this->validate($request, $rules, $messages = [], $attributes); |
Nun werden die Standard-Übersetzungen aus der o.g. Datei verwendet, die Attributnamen für die Attribute firstname und lastname jedoch aus dem frisch definierten Array.