Laravel 5.3 устанавливает имя второго атрибута в пользовательском правиле проверки - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующее пользовательское правило проверки ...

Validator::extend('empty_with', function ($attribute, $value, $parameters, $validator) {
   $other = array_get($validator->getData(), $parameters[0], null);
   return ($value != '' && $other != '') ? false : true;
}, "The :attribute field is not required with the :other field.");

И я использую его как ...

$validator = Validator::make($request->all(), [
    'officer' => 'sometimes|integer',
    'station' => 'empty_with:officer,|integer',
]);

Текущее сообщение об ошибке, которое я получаю:

The station field is not required with the:otherfield.

По сравнению с тем, что я хотел бы получить;

The station field is not required with the officer field.

Как установитьВторой параметр 'Officer' в сообщении об ошибке, тоже самое: атрибут is ... ??

1 Ответ

0 голосов
/ 03 октября 2018

Вам нужно будет добавить собственный заменитель, чтобы использовать свое пользовательское правило проверки.См. «Определение сообщения об ошибке» здесь .

\Validator::replacer('empty_with', function ($message, $attribute, $rule, $parameters) {
    return str_replace(':other', $parameters[0], $message);
});

Этот код сообщает Laravel, что при сбое правила empty_with сообщение должно быть пропущено через это закрытие, прежде чем оно будет передано обратно вПользователь.Замыкание выполняет простую замену строки и возвращает исправленное сообщение об ошибке.

В большинстве случаев каждое правило проверки имеет свои собственные правила замены для сообщений, поскольку оно зависит от определенных атрибутов и их порядка.Хотя замена :other на первый параметр происходит для нескольких правил, она не является автоматической и определяется явно для каждого правила, которое ее использует.Стоит посмотреть на черту Illuminate\Validation\Concerns\ReplacesAttributes, чтобы понять, как Laravel справляется с заменой своих встроенных правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...