support des paramètres tableau
This commit is contained in:
parent
bac0e38592
commit
6409229525
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user