So geben Sie einen benutzerdefinierten Feldnamen in der Laravel-Formularvalidierungsfehlermeldung an

Lesezeit: 3 Minuten

Ich habe die Formularvalidierung in Laravel versucht. Ich habe ein Eingabetextfeld in meinem Formular namens “Kategorie” und ich bekomme den Feldnamen als “Katze” als Kurzform.

Und ich habe die Validierungsregeln so definiert.

public static $rules=array(
         "name"=>"required|min:3",
          "cat"=>"required"
           );

Wenn die Validierung fehlschlägt, erhalte ich eine Fehlermeldung wie diese

The name field is required.
The cat field is required.

Aber ich möchte es als “Das Kategoriefeld ist erforderlich” anstelle von “Katze” anzeigen.
Wie kann ich in der Fehlermeldung „Katze“ in „Kategorie“ ändern?

Benutzer-Avatar
uiroshan

Sie können wie folgt eine benutzerdefinierte Fehlermeldung für Ihr Feld angeben.

$messages = array(
    'cat.required' => 'The category field is required.',
);

$validator = Validator::make($input, $rules, $messages);

Bitte sehen Abschnitt Benutzerdefinierte Fehlermeldungen in der Laravel-Dokumentation für mehr Informationen.

Oder Sie können eine Zuordnung für Ihre Feldnamen wie unten beibehalten. Und Sie können diese in Ihren Validator einstellen. So können Sie anstelle des tatsächlichen Feldnamens einen beschreibenden Namen sehen.

$attributeNames = array(
   'name' => 'Name',
   'cat' => 'Category',     
);

$validator = Validator::make ( Input::all (), $rules );
$validator->setAttributeNames($attributeNames);

  • Ok das ist hilfreich. Aber ich muss eine separate Nachricht für erforderlich, min, max usw. angeben, oder? Das ist zeitaufwändig für große Formulare. Gibt es eine Methode, die Sie kennen, um sie für alle Arten von Fehlern in einer einzigen Zeile zu ändern?

    – JOE

    7. August 2014 um 19:06 Uhr

  • Sie möchten nur die Katze dem Kategoriefeld zuordnen. ist es? Die Standardnachricht wird also mit dem Text „Kategorie“ angezeigt.

    – uiroschan

    7. August 2014 um 19:12 Uhr

  • Das ist die Art von Lösung, von der ich geträumt habe: D danke!

    – Altin

    1. Juni 2021 um 8:25 Uhr

Sie können jede Nachricht anpassen und auch den Namen der Attributfelder in der Validation.php (resources/lang/en/) ändern. um das Attribut in der Validation.php zu setzen

'attributes' => [
   'name' => 'Name',
   'cat' => 'Category',
   'field_name'=>'your attribute'
],

  • Dies sollte die akzeptierte Antwort sein. Einfach und süß

    – Sw0ut

    1. Dezember 2020 um 16:29 Uhr

Ich verwende dies, um mit dem dynamischen Hinzufügen von Zeilen in Formularen umzugehen. Diese Antwort wird im Zusammenhang mit der Verwaltung größerer Formulare bereitgestellt. Diese Antwort ist für Laravel 5

Anfrageformular

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Response;

class SomeThingFormRequest extends Request {

public function authorize()
{
 //be nice
}

public function rules()
{
//my loop building an array of rules ex: $rules['thing.attribute.'.$x]
}

public function attributes()
{
    return [
        'thing.attribute'.$x => 'Nice Name',
    ];
}

Ich hoffe, dies hilft Ihnen, in die richtige Richtung zu lenken, wenn Sie Laravel 5 verwenden. Ich arbeite derzeit daran, es zu testen. Die Dokumentation scheint in Bezug auf dieses Potenzial nicht korrekt zu sein?

Ich habe im Framework (Illuminate\Foundation\Http\FormRequest.php) und (Illuminate\Validation\Validator.php) nach Hinweisen gesucht.

Hier ist eine Alternative $this->validate(request(), [rules], [custom messages], [Custom attribute name]);

            $this->validate(request(), [
                'fname' => "required|alpha_dash|max:20",
                'lname' => "required|alpha_dash|max:30",
                'extensionName' => "required|alpha_dash|max:20",
                'specialization' => "max:100",
                'subSpecialization' => "max:100"
            ], [], 
            [
                'fname' => 'First Name',
                'lname' => 'Last Name',
                'extensionName' => 'Extension Name',
                'specialization'=> 'Specialization',
                'subSpecialization'=> 'Sub Specialization'
            ]);

Benutzer-Avatar
Hitender

Musste einfach resources/lang/en/validation.php

Es gibt ein leeres Array mit dem Namen attributes.

fügen Sie hier Ihren Attributnamen hinzu wie 'cat'=>'category'

Jetzt zeigen alle Validierungsmeldungen Kategorie statt Katze.

Benutzer-Avatar
Kalin Blaga

Hier ist eine Alternative:

$data = ['name' => e(Input::get('name')), 'cat' => e(Input::get('cat'))];
$rules = ['name' => 'required|min:3', 'cat' => 'required'];
// pass an item from lang array if you need to
$nice_input_names = ['cat' => trans('lang_file.a_name_for_the_category_input')];

$validator = Validator::make($data, $rules, $messages, $nice_input_names);

Benutzer-Avatar
Magmatisch

Ich denke, das wird es tun:

Validator::make($request->all(), [
  "name" => "required|min:3",
  "cat" => "required"
], [], [
  "cat" => "category"
])->validate();

1019880cookie-checkSo geben Sie einen benutzerdefinierten Feldnamen in der Laravel-Formularvalidierungsfehlermeldung an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy