mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-24 15:42:09 +08:00
Merge pull request #12533 from uncrackable404/uncrackable404-patch-1
Closure support to forms method on CanBeValidated trait
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user