我有两条 POST 路由 /test 和 /test_new。目标是将来自 /test_new 的所有传入请求连同正文内容重定向到 /test。因此,以下代码旨在使用命名路由进行重定向
$app->post('/test', function (Request $request, Response $response, $args) {
$response->getBody()->write($request->getBody()->getContents());
return $response;
})->setName('test');
$app->post('/test_new', function (Request $request, Response $response, $args) use ($app) {
$routeParser = RouteContext::fromRequest($request)->getRouteParser();
// $routeParser = $app->getRouteCollector()->getRouteParser();
return $response->withStatus(307)->withBody($request->getBody())
->withHeader('Location', $routeParser->urlFor('test'));
});
这段代码失败并显示消息
/test_new - Uncaught RuntimeException: Cannot create RouteContext before routing has been completed in /home/biswa/test/test-slim/vendor/slim/slim/Slim/Routing/RouteContext.php:40
如果我只是将 $routeParser 替换为第二个路由处理程序中的注释行并将 $app 用于 RouterParser 它工作正常。但是在我的实际代码中,我在类函数中有处理逻辑,并且无法访问其中的 $app 。
有人可以帮我解决这个问题吗