This commit is contained in:
2023-04-16 03:51:18 +08:00
parent a38e02251b
commit eb561e20dc
2 changed files with 20 additions and 5 deletions
+2 -2
View File
@@ -26,12 +26,12 @@ class BindForm implements InjectParameterInterface
{ {
$validator = new Validator(); $validator = new Validator();
$reflect = \Kiri::getDi()->getReflectionClass($this->formValidate); $reflect = \Kiri::getDi()->getReflectionClass($this->formValidate);
$model = $reflect->newInstanceWithoutConstructor(); $validator->setFormData($reflect->newInstanceWithoutConstructor());
foreach ($reflect->getProperties() as $property) { foreach ($reflect->getProperties() as $property) {
foreach ($property->getAttributes() as $attribute) { foreach ($property->getAttributes() as $attribute) {
$rule = $attribute->newInstance(); $rule = $attribute->newInstance();
if ($rule instanceof ValidatorInterface) { if ($rule instanceof ValidatorInterface) {
$validator->addRule($property->getName(), $model, $rule); $validator->addRule($property->getName(), $rule);
} }
} }
} }
+18 -3
View File
@@ -23,16 +23,31 @@ class Validator
private object $formData; private object $formData;
/**
* @param object $formData
*/
public function setFormData(object $formData): void
{
$this->formData = $formData;
}
/**
* @return object
*/
public function getFormData(): object
{
return $this->formData;
}
/** /**
* @param string $name * @param string $name
* @param object $data
* @param ValidatorInterface $rule * @param ValidatorInterface $rule
* @return void * @return void
*/ */
public function addRule(string $name, object $data, ValidatorInterface $rule): void public function addRule(string $name, ValidatorInterface $rule): void
{ {
$this->rules[$name] = $rule; $this->rules[$name] = $rule;
$this->formData = $data;
} }