diff --git a/nur_src/v/bs3/fo/Form.php b/nur_src/v/bs3/fo/Form.php index 0761b1d..c70b2f6 100644 --- a/nur_src/v/bs3/fo/Form.php +++ b/nur_src/v/bs3/fo/Form.php @@ -369,20 +369,35 @@ class Form extends ComponentPrintable implements IParametrable, ArrayAccess, Cou return F::has($name); } + private function fixType(IType $type, &$value): bool { + if ($type->isTrim()) $value = trim($value); + if ($value === "") $type->verifixReplaceEmpty($value); + if ($value === false) $type->verifixReplaceFalse($value); + if ($value === null) $type->verifixReplaceNull($value); + if ($type->isUndef($value)) return false; + elseif ($value === null && !$type->isAllowNull()) return false; + elseif ($value === false && !$type->isAllowFalse()) return false; + elseif ($value === "" && !$type->isAllowEmpty()) $value = null; + return true; + } + protected function paramGet($key, ?string $name, &$value): bool { /** @var IType $type */ [$name, $type] = $this->resolveNameType($key, $name); $value = F::get($name); if ($value === null) return false; if ($type !== null) { - if ($type->isTrim()) $value = trim($value); - if ($value === "") $type->verifixReplaceEmpty($value); - if ($value === false) $type->verifixReplaceFalse($value); - if ($value === null) $type->verifixReplaceNull($value); - if ($type->isUndef($value)) return false; - elseif ($value === null && !$type->isAllowNull()) return false; - elseif ($value === false && !$type->isAllowFalse()) return false; - elseif ($value === "" && !$type->isAllowEmpty()) $value = null; + if (is_array($value)) { + $values = []; + foreach ($value as $tmp) { + if ($this->fixType($type, $tmp)) { + $values[] = $tmp; + } + } + $value = $values; + } else { + if (!$this->fixType($type, $value)) return false; + } } return true; }