Laravel 6 Validator для setLocale (), когда поле представлено - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть API, поэтому, когда front отправляет мне «language», я хочу, чтобы Validator установил setLocale () и отобразил сообщение об ошибке (из resources / lang / ru / validation. php) на запрашиваемом языке.

Теперь у меня есть этот код, который работает:

$validator = Validator::make($request->all(), [
            'supplier_id' => 'required|integer',
            'language' => 'required',
        ]);
        App::setLocale($request->language);
        if ($validator->fails()).....

Я хочу удалить App :: setLocale, добавить пользовательское правило "lang" и изменить его на:

$validator = Validator::make($request->all(), [
            'supplier_id' => 'required|integer',
            'language' => 'required|lang',
        ]);
        if ($validator->fails())....

Так отсюда: https://laravel.com/docs/6.x/validation#using - расширения в поставщиках / AppServiceProvider. php Я добавил это:

public function boot()
    {
        Validator::extend('lang', function ($attribute, $value, $parameters, $validator) {
            //die(var_dump([$attribute/*"language"*/, $value/*"ru"*/, $parameters/*[]*/]));
            App::setLocale($value);return $value;
        });
    }

Что я пропустил? Может быть, есть другое решение?

...