Slim 4 将所有路由放入控制器中,无需 $app

2023-12-15

我需要将所有注册的路由放入控制器中。 在 slim 3 中,可以使用以下方式获得路由器

$router = $container->get('router');
$routes = $router->getRoutes();

使用 $app 很容易$routes = $app->getRouteCollector()->getRoutes();

有任何想法吗?


如果您使用 PHP-DI,您可以添加容器定义并通过构造函数注入注入对象。

Example:

<?php

// config/container.php

use Slim\App;
use Slim\Factory\AppFactory;
use Slim\Interfaces\RouteCollectorInterface;

// ...

return [
    App::class => function (ContainerInterface $container) {
        AppFactory::setContainer($container);

        return AppFactory::create();
    },

    RouteCollectorInterface::class => function (ContainerInterface $container) {
        return $container->get(App::class)->getRouteCollector();
    },

    // ...
];

动作类:

<?php

namespace App\Action\Home;

use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
use Slim\Interfaces\RouteCollectorInterface;

final class HomeAction
{
    /**
     * @var RouteCollectorInterface
     */
    private $routeCollector;

    public function __construct(RouteCollectorInterface $routeCollector)
    {
        $this->routeCollector = $routeCollector;
    }

    public function __invoke(ServerRequest $request, Response $response): ResponseInterface
    {
        $routes = $this->routeCollector->getRoutes();

        // ...
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Slim 4 将所有路由放入控制器中,无需 $app 的相关文章

  • 使用TensorFlow-Slim进行图像分类

    参考 https github com tensorflow models tree master slim 使用TensorFlow Slim进行图像分类 准备 安装TensorFlow 参考 https www tensorflow o
  • Slim 4 中的路由中间件不会停止调用路由中的可调用对象

    我在 Slim4 中的授权中间件上遇到了困难 这是我的代码 app AppFactory create app gt add new Authentication app gt group providers function RouteC
  • Slim 框架/公共文件夹重定向

    我正在使用 Slim Framework v3 我已经设置了 API 如果我访问它可以顺利工作http localhost 8080 slimapp public 我有默认的目录结构 我的示例 API 端点是http localhost 8
  • 如何在路由参数中发送 URL?

    我定义了这样的路线 app gt map GET POST abc url function request response args return response gt add new CustomMiddleware 当我传递一个没
  • 将路由组织到单独的文件中,在 Slim 中无法正常工作

    这是我的索引 php file use Psr Http Message ServerRequestInterface as Request use Psr Http Message ResponseInterface as Respons
  • Slim + Twig - 如何在开发过程中关闭 Twig 缓存?

    这是我将其注入 Slim 容器中的树枝视图 Views and Templates https www slimframework com docs features templates html container view functi
  • jQuery ajax() POST 到 Slim PHP 框架

    使用 jquery mobile phonegap 尝试 POST 到 Slim 应用程序 我有以下代码 document on vclick test form function ajax type POST url http mydom
  • 在现有的 apache Web 服务器上运行 slim 框架

    我是 slim 框架的新手 目前 在我现有的 centos 7 网络服务器上 我正在运行其他基于 php 的应用程序 所以目前我的目录结构是这样的 var www html phpapp1 phpapp2 apislim 我创建的 apis
  • Slim 3 中间件重定向

    我想检查用户是否登录 因此我有一个返回 true 或 false 的类 现在我想要一个中间件来检查用户是否登录 app gt get login Controller AccountController loginGet gt add Au
  • 如何使用Slim框架获取POST请求实体

    我已经发送了JSON使用 android java 的数据 通过在 post 实体中设置它 如下所示 HttpPost httpPostRequest new HttpPost URLs AddRecipe StringEntity se
  • Slim 框架 - 无法用点解释路由

    问题陈述 我目前正在开发内部 RESTful API 并使用我们的主域名作为环境标识符 然而 我注意到 Slim 根本不喜欢其中有点的路线 示例案例 我有一个使用 PHP 内置 Web 服务器运行的本地 Web 服务器 并且我调用了php
  • Slim\Exception\HttpNotFoundException

    我正在创建一个新的 Slim 项目并收到以下错误 苗条应用程序错误 由于以下错误 应用程序无法运行 错误详情 Type Slim Exception HttpNotFoundException Code 404 Message Not fo
  • slim3 中的控制器单元测试

    首先 我想说 我是 PHP phpunit 单元测试的新手 在我的新项目 slim3 框架 中 我想测试我的控制器 例如 LoginController 我的想法是 在单元测试方法中 创建实例LoginController 模拟控制器中的一
  • 具有纤薄框架的读取令牌

    我正在使用 SlimFramework 和 JWT 来处理基于登录名和密码的基于令牌的身份验证 我成功登录并发送令牌作为响应 这是我的代码
  • 指导我使用 phpleague 库实现 Oauth2 PHP 服务器

    我在用Slim Framework With Eloquent ORM https packagist org packages illuminate database 尝试实施https github com thephpleague o
  • 如何使用 Slim 接受所有 REST URI 中的排序和分页参数?

    我正在使用 Slim PHP 框架为我的应用程序创建 RESTful API 我希望所有 URL 都能够接受排序和分页参数 有人可以告诉我最好的方法吗 另外 有人可以为我提供一些适当的 REST URI 吗 IE
  • Slim 3 - 如何添加404模板?

    在 Slim 2 中 我可以轻松地覆盖默认的 404 页面 ref http help slimframework com discussions problems 4400 templatespath doesnt change app
  • 如何对 Slim 框架应用程序进行单元测试

    我一直在尝试对修改其他人代码的示例进行单元测试 每次我到达测试运行时都没有错误的程度 当我期望它们通过时 我只是遇到相同的失败 网上没有大量文档 我真的不知道还能去哪里 任何人都可以看到我的代码哪里出错了 bootstrap php php
  • 精简 PHP 和 GET 参数

    我使用 Slim PHP 作为 RESTful API 的框架 如何在 Slim PHP 中从 URL 获取 GET 参数 例如 如果我想使用以下内容 http api example com dataset schools zip 999
  • Slim 3 - 斜杠作为路由参数的一部分

    我需要使用可以包含斜杠 的参数来编写 URL 例如 经典的 hello username 路线 默认情况下 hello Fabien将匹配此路线 但不匹配 hello Fabien Kris 我想问你如何在 Slim 3 框架中做到这一点

随机推荐