Предполагая, что вы используете пользовательский класс Request
, метод rules()
ожидает, что ассоциативный массив будет возвращен до того, как он применяет проверку.
Вы можете динамически создавать свой массив правил, используя содержимое запроса перед применением валидации, например, так:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$validation_array = [
'name' => 'required|string|max:255',
];
if ($this->my_field === $some_condition) {
$validation_array = array_merge($validation_array. [
'my_field' => "required|expensive_validation|expensive_validation2"
]);
}
return $validation_array;
}
Примечание: я еще не запускал, но принцип должен быть в порядке.