Как обойти множественные значения атрибута проверки в сообщениях проверки в Laravel?

Я сделал специальный валидатор, который сравнивает две даты, и я хочу показать пользователю сообщение с одной датой ( invoicedate в моем примере) должен быть раньше, чем другой ( deadline в моем примере).

Внутри моего собственного валидатора я пишу:

public static validateInfo(Request $request)
{
$validator = Validator::make($request->all(), [
'referencenumber' => 'required|min:2|max:64',
'invoicedate' => 'required|date',
'deadline' => 'null|date'
]);
$validator->after(function ($validator) use ($request) { // custom static function where I compare two dates using strtotime(), if invoicedate and deadline are still valid, and return false or true
if (InvoiceValidator::invalidDeadline($validator, $request)) {
$validator->errors()->add('deadline', __('validation.negative_date_difference', [
'attribute1' => 'deadline',
'attribute2' => 'invoicedate'
]));
}
});
return $validator;
}

И внутри resources\lang\en\validation.php Я пишу:

<?php
return [
// ...
'negative_date_difference'  => 'The :attribute1 may not be earlier than the :attribute2.',
// ...
'attributes' => [
'referencenumber' => 'Reference Number', // This works. It's fine
'invoicedate' => 'Invoice Date' // But this does not work, of course, because I wrote $validator->errors()->add('deadline'...); so the deadline is the only targetted attribute name here
],
]

Токовый выход:

Срок не может быть раньше, чем счет-фактура.


Мой вопрос: как обойти invoicedateкогда это сообщение я хочу увидеть?

Срок не может быть раньше даты выставления счета.

0

Решение

внутри resources\lang\en\messages.php Я добавил новое сообщение:

<?php
return [
'invoice_date' => 'Invoice Date'
]

Затем отредактировал мою пользовательскую функцию проверки следующим образом:

if (InvoiceValidator::invalidDeadline($validator, $request)) {
$validator->errors()->add('deadline', __('validation.negative_date_difference', [
'attribute1' => 'deadline',
'attribute2' => __('messages.invoice_date') // This works
]));
}
1

Другие решения

Других решений пока нет …