Używam laravel 5.8 i umieściłem plik validation.php w moim folderze zasobów / lang / xx /.

W moim kontrolerze używam tego kodu do walidowania pól:

$validator = Validator::make($request->all(), [
            'lastname' => 'required',
            'firstname' => 'required',
            'gender' => 'required',
            'birthplace_id' => 'required',
            'birthdate' => 'required',
            'fiscal_code' => 'required|unique:customers,fiscal_code,NULL,id,deleted_at,NULL',
        ]);

Nie muszę zwracać walidatora $, ale potrzebuję, w tej samej funkcji, wydrukować błędy. Napisałem ten kod:

if ($validator->fails()) {
                \Log::info(json_encode($validator));
}

I mam to:

{
        "customMessages": [],
        "fallbackMessages": [],
        "customAttributes": [],
        "customValues": [],
        "extensions": [],
        "replacers": []
}

To jest zawartość mojego pliku validation.php:

return [

/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/

'required' => 'The :attribute field is required.',
'unique' => 'Il :attribute è già stato utilizzato.',

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

'custom' => [
    'attribute-name' => [
        'rule-name' => 'custom-message',
    ],
],

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/

'attributes' => [],

];

Jak mogę połączyć mój walidator z plikiem lang validation.php?

0
Swim89 3 kwiecień 2020, 17:02

3 odpowiedzi

Najlepsza odpowiedź

Rozwiązałem tym kodem:

        if ($validator->fails()) {
            return response()->json([
                'description' => 'Validation failed',
                'errors' => $validator->messages()
            ], 500);
        }
0
Swim89 3 kwiecień 2020, 16:08

Powinien automatycznie połączyć się z plikiem validation.php

Spróbuj użyć tego w ten sposób:

$request->validate([
   'lastname' => 'required',
   'firstname' => 'required',
    'gender' => 'required',
    'birthplace_id' => 'required',
    'birthdate' => 'required',
    'fiscal_code' => 'required|unique:customers,fiscal_code,NULL,id,deleted_at,NULL'
]);
0
Maykel Boes 3 kwiecień 2020, 14:14

Powinieneś zadzwonić do validate na żądanie w następujący sposób:

$validatedData = $request->validate([
       'lastname' => 'required',
       'firstname' => 'required',
       'gender' => 'required',
       'birthplace_id' => 'required',
       'birthdate' => 'required',
       'fiscal_code' => 'required|unique:customers,fiscal_code,NULL,id,deleted_at,NULL',          
    ]);

Możesz uzyskać dostęp do komunikatów o błędach w swoim blade, jak podano w dokumenty

Możesz je wydrukować w ten sposób:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Jeśli na przykład fiscal_code nie jest unikatową wiadomością

Kod fiskalny jest używany.

Powinno się pojawić.

0
Adam 3 kwiecień 2020, 15:40