Пользовательские правила проверки Laravel должны быть в нижнем регистре?

У меня есть модель, и у нее есть несколько имен полей, и «lastName» среди них.

В моем файле FormRequest у меня есть правила и сообщения для этого поля:

$rules = ['lastName.*' => 'lastName_fail: index'];
$messages = ['lastName.*lastName_fail' => This lastName has different value in DB!'];

Когда я отправляю форму, заполняя поле «lastName» намеренно «неправильным» значением, она не проходит проверку и возвращает сообщение об ошибке:

validation.last_name_fail

(чего нет в $ messages).

Но когда я меняю $ rules и $ messages на:

$rules = ['lastName.*' => 'lastname_fail: index'];
$messages = ['lastName.*lastname_fail' => This lastName has different value in DB!'];

(так что фактическое «правило» теперь в нижнем регистре «lastname_fail»), оно выводит то, что я хочу:

Это lastName имеет другое значение в БД!

из этого я могу сделать вывод, что имя правила проверки Laravel может быть только строчными.

Заявлено ли это где-нибудь в документации?

Если да, может, это кому-то поможет.


person Sergej Fomin    schedule 23.07.2017    source источник


Ответы (2)


Это не упоминается в документации. Однако существует шаблон именования как для имени метода правила проверки, так и для имени правила.

Название метода правила:

Он должен иметь префикс validate, а остальная часть должна быть в Camel Case.

Название правила:

Он будет в lowercase без префикса validate, и каждое слово будет разделено underscore.


Поэтому, если вы хотите добавить alpha_dash_spaces правило проверки, соответствующий метод будет называться validateAlphaDashSpaces().

person Zayn Ali    schedule 23.07.2017
comment
Спасибо за полезную статью, Зейн. Я думаю, что то, что вы процитировали из этой статьи, касается именования методов проверки, а не имен правил проверки. - person Sergej Fomin; 25.07.2017
comment
@SergejFomin Это объясняет и то, и другое. Однако я уточнил цитату и обновил свой ответ :-) - person Zayn Ali; 25.07.2017

Просто проанализируйте $ request [data] перед Валидатором

use Illuminate\Support\Str;
    
    $request['name_it'] = Str::lower($request['name_it']);
    $request['name_en'] = Str::lower($request['name_en']);
                
    $validator = Validator::make($request->all(), [
    'name_it' => ['required', 'string', 'max:255', 'unique:categories'],
    'name_en' => ['required', 'string', 'max:255', 'unique:categories'],
    ]);
    if ($validator->fails()) {
        return redirect()
    ->back()->withErrors($validator)
    ->withInput();
    }
person MarcoPa84    schedule 09.03.2021