support des paramètres tableau

This commit is contained in:
Jephté Clain 2025-02-19 10:25:48 +04:00
parent bac0e38592
commit 6409229525

View File

@ -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;
}