Slim Framework 4获取中间件中的所有路线

发布于 2025-02-13 04:11:08 字数 1136 浏览 0 评论 0原文

我使用了示例 https://stackoverflow.com/a/59681352/1650293 需要它在中间件中发生。当我在中间件中做完全相同的事情时,它会返回错误500。 缺什么?我不明白为什么它不起作用。

这是我的中心,

namespace App\Application\Middleware;

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Slim\Psr7\Response;
use Slim\Routing\RouteContext;
use Slim\Interfaces\RouteCollectorInterface;

final class ACLMiddleware {
private $routeCollector;
    
    public function __construct(RouteCollectorInterface $routeCollector)
    {
        $this->routeCollector = $routeCollector;
    }

public function __invoke(Request $request, RequestHandler $handler): Response
    {
$routes = $this->routeCollector->getRoutes();
print_r($routes);
}
}

这是我的容器

    use Slim\Interfaces\RouteCollectorInterface;
    
    return [
    ...
    RouteCollectorInterface::class => function (ContainerInterface $container) {
            return $container->get(App::class)->getRouteCollector();
        },

...
];

I used the example https://stackoverflow.com/a/59681352/1650293 but it works perfectly in Actions, but I need it to happen in middleware. When I do the exact same thing in middleware, it returns error 500.
What is missing? I couldn't understand why it didn't work.

This is my middware

namespace App\Application\Middleware;

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Slim\Psr7\Response;
use Slim\Routing\RouteContext;
use Slim\Interfaces\RouteCollectorInterface;

final class ACLMiddleware {
private $routeCollector;
    
    public function __construct(RouteCollectorInterface $routeCollector)
    {
        $this->routeCollector = $routeCollector;
    }

public function __invoke(Request $request, RequestHandler $handler): Response
    {
$routes = $this->routeCollector->getRoutes();
print_r($routes);
}
}

This is my container

    use Slim\Interfaces\RouteCollectorInterface;
    
    return [
    ...
    RouteCollectorInterface::class => function (ContainerInterface $container) {
            return $container->get(App::class)->getRouteCollector();
        },

...
];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文