Skip to content

Commit 8a69df2

Browse files
authored
Fixed bug that ValidationMiddleware will throw exception in websocket. (#2139)
1 parent c399ca7 commit 8a69df2

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/Middleware/ValidationMiddleware.php

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,19 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
5858
if ($this->shouldHandle($dispatched)) {
5959
try {
6060
[$requestHandler, $method] = $this->prepareHandler($dispatched->handler->callback);
61-
$reflectionMethod = ReflectionManager::reflectMethod($requestHandler, $method);
62-
$parameters = $reflectionMethod->getParameters();
63-
foreach ($parameters as $parameter) {
64-
if ($parameter->getType() === null) {
65-
continue;
66-
}
67-
$classname = $parameter->getType()->getName();
68-
if ($this->isImplementedValidatesWhenResolved($classname)) {
69-
/** @var \Hyperf\Validation\Contract\ValidatesWhenResolved $formRequest */
70-
$formRequest = $this->container->get($classname);
71-
$formRequest->validateResolved();
61+
if ($method) {
62+
$reflectionMethod = ReflectionManager::reflectMethod($requestHandler, $method);
63+
$parameters = $reflectionMethod->getParameters();
64+
foreach ($parameters as $parameter) {
65+
if ($parameter->getType() === null) {
66+
continue;
67+
}
68+
$classname = $parameter->getType()->getName();
69+
if ($this->isImplementedValidatesWhenResolved($classname)) {
70+
/** @var \Hyperf\Validation\Contract\ValidatesWhenResolved $formRequest */
71+
$formRequest = $this->container->get($classname);
72+
$formRequest->validateResolved();
73+
}
7274
}
7375
}
7476
} catch (UnauthorizedException $exception) {
@@ -114,7 +116,8 @@ protected function prepareHandler($handler): array
114116
if (strpos($handler, '@') !== false) {
115117
return explode('@', $handler);
116118
}
117-
return explode('::', $handler);
119+
$array = explode('::', $handler);
120+
return [$array[0], $array[1] ?? null];
118121
}
119122
if (is_array($handler) && isset($handler[0], $handler[1])) {
120123
return $handler;

0 commit comments

Comments
 (0)