fix: convert request parameters to variables

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-07-18 21:27:12 -04:00
parent eda7e0e8cc
commit 584edce5d6
+10 -2
View File
@@ -4,6 +4,7 @@ namespace KTXC\Routing;
use DI\Attribute\Inject;
use KTXC\Http\Request\Request;
use KTXC\Http\Request\RequestInputParameters;
use KTXC\Http\Response\Response;
use KTXC\Injection\Container;
use KTXC\Module\ModuleManager;
@@ -207,7 +208,8 @@ class Router
/**
* Dispatch a matched route meta and return a Response (or null if controller does not return one).
* Performs light argument resolution: Request object, route params, body fields, full body for array params.
* Performs light argument resolution: Request object, route params, body fields, query params, full body for array params.
* Precedence on name collision: route params > body fields > query params > parameter default.
*/
public function dispatch(Route $route, Request $request): ?Response
{
@@ -224,7 +226,8 @@ class Router
try {
$requestParameters = $request->getPayload();
} catch (\Throwable) {
// ignore payload errors
// ignore payload errors, fall back to an empty parameter bag
$requestParameters = new RequestInputParameters([]);
}
$reflectionMethod = new \ReflectionMethod($routeControllerName, $routeControllerMethod);
$routeParams = $route->params ?? [];
@@ -258,6 +261,11 @@ class Router
$callArgs[] = $requestParameters->get($reflectionParameterName);
continue;
}
// if method parameter matches a query string param, use that
if ($request->query->has($reflectionParameterName)) {
$callArgs[] = $request->query->get($reflectionParameterName);
continue;
}
// if method parameter did not match, but has a default value, use that
if ($reflectionParameter->isDefaultValueAvailable()) {
$callArgs[] = $reflectionParameter->getDefaultValue();