diff --git a/src/Validator/Types/ArrayProxy.php b/src/Validator/Types/ArrayProxy.php index 3aba38e..eb88aa5 100644 --- a/src/Validator/Types/ArrayProxy.php +++ b/src/Validator/Types/ArrayProxy.php @@ -15,8 +15,12 @@ class ArrayProxy extends TypesProxy */ public function dispatch(object $form, string $field, mixed $value): bool { - if (is_null($value) && !$this->allowsNull) { - return false; + if (is_null($value)) { + if (!$this->allowsNull) { + return false; + } + $form->{$field} = []; + return true; } return $value == ($form->{$field} = $value); } diff --git a/src/Validator/Types/BoolProxy.php b/src/Validator/Types/BoolProxy.php index dbde676..8c452a4 100644 --- a/src/Validator/Types/BoolProxy.php +++ b/src/Validator/Types/BoolProxy.php @@ -15,7 +15,11 @@ class BoolProxy extends TypesProxy */ public function dispatch(object $form, string $field, mixed $value): bool { - if (is_null($value) && !$this->allowsNull) { + if (is_null($value)) { + if (!$this->allowsNull) { + return false; + } + $form->{$field} = false; return false; } // TODO: Implement dispatch() method. diff --git a/src/Validator/Types/FloatProxy.php b/src/Validator/Types/FloatProxy.php index a32c648..72c4b07 100644 --- a/src/Validator/Types/FloatProxy.php +++ b/src/Validator/Types/FloatProxy.php @@ -14,7 +14,11 @@ class FloatProxy extends TypesProxy */ public function dispatch(object $form, string $field, mixed $value): bool { - if (is_null($value) && !$this->allowsNull) { + if (is_null($value)) { + if (!$this->allowsNull) { + return false; + } + $form->{$field} = 0; return false; } return $value == ($form->{$field} = (float)$value); diff --git a/src/Validator/Types/IntProxy.php b/src/Validator/Types/IntProxy.php index 98b14b8..d675d57 100644 --- a/src/Validator/Types/IntProxy.php +++ b/src/Validator/Types/IntProxy.php @@ -14,7 +14,11 @@ class IntProxy extends TypesProxy */ public function dispatch(object $form, string $field, mixed $value): bool { - if (is_null($value) && !$this->allowsNull) { + if (is_null($value)) { + if (!$this->allowsNull) { + return false; + } + $form->{$field} = 0; return false; } return $value == ($form->{$field} = (int)$value); diff --git a/src/Validator/Types/MixedProxy.php b/src/Validator/Types/MixedProxy.php index f7d27fe..a6641d7 100644 --- a/src/Validator/Types/MixedProxy.php +++ b/src/Validator/Types/MixedProxy.php @@ -19,9 +19,6 @@ class MixedProxy extends TypesProxy public function dispatch(object $form, string $field, mixed $value): bool { try { - if (is_null($value) && !$this->allowsNull) { - return false; - } return $value == ($form->{$field} = $value); } catch (\Throwable $throwable) { return false; diff --git a/src/Validator/Types/StringProxy.php b/src/Validator/Types/StringProxy.php index a564c77..24fbcf6 100644 --- a/src/Validator/Types/StringProxy.php +++ b/src/Validator/Types/StringProxy.php @@ -15,7 +15,11 @@ class StringProxy extends TypesProxy */ public function dispatch(object $form, string $field, mixed $value): bool { - if (is_null($value) && !$this->allowsNull) { + if (is_null($value)) { + if (!$this->allowsNull) { + return false; + } + $form->{$field} = ''; return false; } return $value == ($form->{$field} = (string)$value); diff --git a/src/Validator/Validator.php b/src/Validator/Validator.php index 65b253c..782a047 100644 --- a/src/Validator/Validator.php +++ b/src/Validator/Validator.php @@ -120,18 +120,13 @@ class Validator foreach ($this->rules as $name => $rules) { /** @var array> $typeValidator */ $typeValidator = array_pop($rules); - $key = $this->alias[$name]; - if (!isset($params[$key])) { - if ($rules[0] instanceof RequiredValidatorFilter) { + if (!isset($params[$name])) { + if (!empty($rules) && $rules[0] instanceof RequiredValidatorFilter) { return $this->addError('The request field ' . $name . ' is mandatory and indispensable'); } - if (!$typeValidator[0]->allowsNull) { - return $this->addError('The request field ' . $name . ' parameter cannot be null'); - } - $params[$key] = null; } - if (!call_user_func($typeValidator, $this->formData, $name, $params[$key])) { + if (!call_user_func($typeValidator, $this->formData, $name, $params[$name] ?? null)) { return $this->addError('The parameter type used in the request field ' . $name . ' is incorrect'); }