Merge pull request #12533 from uncrackable404/uncrackable404-patch-1

Closure support to forms method on CanBeValidated trait
This commit is contained in:
Dan Harrin
2024-04-29 09:45:20 +01:00
committed by GitHub
@@ -426,10 +426,19 @@ trait CanBeValidated
}
/**
* @param string | array<mixed> $rules
* @param string | array<mixed> | Closure $rules
*/
public function rules(string | array $rules, bool | Closure $condition = true): static
public function rules(string | array | Closure $rules, bool | Closure $condition = true): static
{
if ($rules instanceof Closure) {
$this->rules = [
...$this->rules,
[$rules, $condition]
];
return $this;
}
if (is_string($rules)) {
$rules = explode('|', $rules);
}
@@ -666,9 +675,26 @@ trait CanBeValidated
foreach ($this->rules as [$rule, $condition]) {
if (is_numeric($rule)) {
$rules[] = $this->evaluate($condition);
} elseif ($this->evaluate($condition)) {
$rules[] = $this->evaluate($rule);
continue;
}
if (! $this->evaluate($condition)) {
continue;
}
$rule = $this->evaluate($rule);
if (is_array($rule)) {
$rules = [
...$rules,
...$rule
];
continue;
}
$rules[] = $rule;
}
return $rules;