web-dev-qa-db-fra.com

Comment donner un nom de champ personnalisé dans le message d'erreur de validation du formulaire laravel

J'essayais de valider le formulaire à Laravel. Dans mon formulaire, un champ de saisie de texte appelé «Catégorie» est attribué et son nom est «cat» en abrégé. 

Et j'ai défini les règles de validation comme ceci.

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

Quand la validation échoue je reçois un message d'erreur comme celui-ci

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

Mais je veux l'afficher comme "Le champ de catégorie est obligatoire" au lieu de "chat". 
Comment puis-je changer "cat" en "catégorie" dans un message d'erreur?.

10
JOE

Vous pouvez spécifier un message d'erreur personnalisé pour votre champ comme suit.

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

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

Veuillez consulter la section Messages d'erreur personnalisés de la documentation de laravel pour plus d'informations. 

Ou vous pouvez garder un mappage pour vos noms de champs comme ci-dessous. Et vous pouvez les définir dans votre validateur. Ainsi, vous pouvez voir le nom descriptif au lieu du nom de champ réel.

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

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

J'utilise ceci pour traiter l'ajout dynamique de lignes dans les formulaires. Cette réponse est fournie dans le contexte de la gestion de formulaires plus volumineux. Cette réponse concerne Laravel 5

Demande de formulaire

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',
    ];
}

J'espère que cette aide vous orientera dans la bonne direction si vous utilisez Laravel 5. Je suis en train de le tester. La documentation semble être mal à propos de ce potentiel?

J'ai creusé dans le cadre (Illuminate\Foundation\Http\FormRequest.php) et (Illuminate\Validation\Validator.php) pour les indices. 

8
GeraldBiggs

vous pouvez personnaliser chaque message, modifier également le nom des champs d'attribut dans validation.php (resources/lang/en /). pour définir l'attribut dans validation.php 

'attributes' => [
   'name' => 'Name',
   'cat' => 'Category',
   'field_name'=>'your attribute'
],
4
hamid Reza Kamali

Voici une 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);
0
Calin Blaga

Il suffit de resources/lang/en/validation.php

Il existe un tableau vide nommé attributes.

ajoutez votre nom d'attribut ici comme 'cat'=>'category'

désormais, tous les messages de validation affichent la catégorie au lieu de cat.

0
Hitender