Как получить значение параметра, переданного в пользовательском правиле валидации 5

The custom validation rule is :

Validator::extend('greater_than', function($attribute, $value, $parameters) {
    if (isset($parameters[0])) {
        return intval($value) > intval($parameter[0]);
    } else {
        return false;
    }
}

max_occupancy rule would then be:

'max_occupancy' => 'required|integer|max:100|greater_than:base_occupancy'

но возвращаемый массив "$parameters": array:1 [▼ 0 => "base_occupancy"]. поэтому я не получаю значение base_occupancy для проверки условия "more_than".

1 ответ

Использование $validator->getData(), Он вернет массив значений ключа, в котором ключом являются имена входных данных формы, а значением являются их значения.

В вашем случае исправьте так:

Validator::extend('greater_than', function($attribute, $value, $parameters, $validator) {
    $all_form_data = $validator->getData();
    if (isset($all_form_data[$parameters[0]])) {
        return intval($value) > intval($all_form_data[$parameters[0]]);
    } else {
        return false;
    }
}
Другие вопросы по тегам