eee
This commit is contained in:
@@ -39,7 +39,7 @@ class BindForm implements InjectParameterInterface
|
|||||||
if (!class_exists($attribute->getName())) {
|
if (!class_exists($attribute->getName())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$rule = inject($attribute->newInstance());
|
$rule = \inject($attribute->newInstance());
|
||||||
if ($rule instanceof ValidatorInterface) {
|
if ($rule instanceof ValidatorInterface) {
|
||||||
$validator->addRule($property->getName(), $rule);
|
$validator->addRule($property->getName(), $rule);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,10 @@ class Validator
|
|||||||
*/
|
*/
|
||||||
public function addRule(string $name, ValidatorInterface $rule): void
|
public function addRule(string $name, ValidatorInterface $rule): void
|
||||||
{
|
{
|
||||||
$this->rules[$name] = $rule;
|
if (!isset($this->rules[$name])) {
|
||||||
|
$this->rules[$name] = [];
|
||||||
|
}
|
||||||
|
$this->rules[$name][] = $rule;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -71,7 +74,7 @@ class Validator
|
|||||||
$type = new \ReflectionProperty($this->formData, $key);
|
$type = new \ReflectionProperty($this->formData, $key);
|
||||||
if (!($type->getType() instanceof \ReflectionUnionType)) {
|
if (!($type->getType() instanceof \ReflectionUnionType)) {
|
||||||
$value = match ($type->getType()?->getName()) {
|
$value = match ($type->getType()?->getName()) {
|
||||||
'int' => (int)$value,
|
'int' => (int)$value,
|
||||||
'float' => (float)$value,
|
'float' => (float)$value,
|
||||||
default => $value
|
default => $value
|
||||||
};
|
};
|
||||||
@@ -93,8 +96,10 @@ class Validator
|
|||||||
public function run(ServerRequestInterface|Request $request): bool
|
public function run(ServerRequestInterface|Request $request): bool
|
||||||
{
|
{
|
||||||
foreach ($this->rules as $name => $rule) {
|
foreach ($this->rules as $name => $rule) {
|
||||||
if (!$rule->dispatch($this->formData, $name)) {
|
foreach ($rule as $item) {
|
||||||
return $this->addError($name);
|
if (!$item->dispatch($this->formData, $name)) {
|
||||||
|
return $this->addError($name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -107,7 +112,7 @@ class Validator
|
|||||||
*/
|
*/
|
||||||
private function addError($field): bool
|
private function addError($field): bool
|
||||||
{
|
{
|
||||||
$this->message = $field . ' error';
|
$this->message = 'Field ' . $field . ' param format fail.';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class ValidatorMiddleware implements MiddlewareInterface
|
|||||||
{
|
{
|
||||||
$validator = $this->validator->bindData($request);
|
$validator = $this->validator->bindData($request);
|
||||||
if (!$validator->run($request)) {
|
if (!$validator->run($request)) {
|
||||||
return $this->response->html('400 Bad Request', 400);
|
return $this->response->html($validator->error(), 415);
|
||||||
} else {
|
} else {
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user