Пользовательский класс валидации Laravel получает значение параметра правильно
У меня есть класс, который проверяет две даты и видит, если значение больше или равно второму параметру. Мой вопрос: как вы правильно получаете значение из второго поля, которое я использовал 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);
}
}
Вы можете использовать переменную-членную переменную $data
для объекта validator для получения значения других атрибутов:
return ( date_parse( $value ) <= date_parse( $this->data[$value_to_compare] ) );