Пользовательский класс валидации Laravel получает значение параметра правильно

98
12

У меня есть класс, который проверяет две даты и видит, если значение больше или равно второму параметру. Мой вопрос: как вы правильно получаете значение из второго поля, которое я использовал Input :: get ($ value_to_compare), которое, на мой взгляд, не является правильным путем.

class CoreValidator extends Illuminate\Validation\Validator {

protected function validateDateLessThanOrEqualTo($attribute, $value, $parameters)
{

/*
* If a input with the name equal to the value we compare with, we
* use it, otherwise we proceed as usual
*/

if( isset( $this->attributes[ $parameters[0] ] ) )
{

$value_to_compare = $this->attributes[ $parameters[0] ];

}//if we have an input with this name
else
{

$value_to_compare = $parameters[0];

}//we compare with the provided value

return ( date_parse( $value ) <= date_parse( Input::get($value_to_compare) ) );

}

protected function replaceDateLessThanOrEqualTo($message, $attribute, $rule, $parameters)
{

return str_replace(':other', ucwords(str_replace('_', ' ', $parameters[0])), $message);

}
}

спросил(а) 2021-01-19T17:52:11+03:00 2 месяца, 3 недели назад
1
Решение
61

Вы можете использовать переменную-членную переменную $data для объекта validator для получения значения других атрибутов:

return ( date_parse( $value ) <= date_parse( $this->data[$value_to_compare] ) );

ответил(а) 2021-01-19T17:52:11+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема