Slim 3在中间件中获取当前路由

2023-11-24

我想在中间件类中获取当前 I 路由的名称。以前(在 Slim 2.* 中)您可以像这样获取当前路线:

$route = $this->app->router->getCurrentRoute();

但这个功能在Slim 3.0版本中已经被删除了。我在以下代码中找到了__invoke的方法Slim\App:

    // Get the route info
    $routeInfo = $request->getAttribute('routeInfo');

    /** @var \Slim\Interfaces\RouterInterface $router */
    $router = $this->container->get('router');

    // If router hasn't been dispatched or the URI changed then dispatch
    if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) {
        $request = $this->dispatchRouterAndPrepareRoute($request, $router);
        $routeInfo = $request->getAttribute('routeInfo');
    }

这表明当前路由被存储为属性routeInfo in the Request。但似乎我的自定义中间件类在设置属性之前被调用(由$this->dispatchRouterAndPrepareRoute($request, $router);方法)。因为打电话$request->getAttribute('routeInfo')决心NULL.

所以我的问题是;如何从中间件函数/类获取当前路由(或路由名称)?

或者我应该复制上面的代码Slim\App?


$request->getUri()->getPath()

获取当前路线,即使在middleware.

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

Slim 3在中间件中获取当前路由 的相关文章

随机推荐

  • 在node.js中加载并执行外部js文件并访问局部变量?

    做一个简单的事情是否容易 可能include path to file Node js 中的命令类型 我想做的就是访问局部变量并运行脚本 人们通常如何组织比简单的 hello world 更大的 Node js 项目 功能齐全的动态网站 例
  • Excel 是否计算提供给 IF 函数的两个结果参数?

    Excel s if函数采用三个参数 一个条件 一个 if true 值和一个 if false 值 Excel 是否计算出所有三个参数的值 还是仅计算条件的值和相应的结果 澄清 我不知道是什么result of the if将会是 我想知
  • init 方法中的 [self release]、[self dealloc] 或 [super dealloc] ?

    我刚刚阅读了有关如何在 init 方法中正确失败的内容 并且文档似乎彼此不同意 一种建议抛出异常 另一种则建议清理并返回 nil 目前的最佳实践是什么 我相信普遍接受的做法是失败时返回零 但你确实想释放 self 以避免泄漏 id init
  • 如何等待数据写入管道的另一端

    我正在用 C 语言开发一个应用程序 父进程和子进程通过管道进行通信 在写入管道之前 父进程执行另一个语句 在示例代码中 我使用 sleep 10 来进行延迟 在子进程中 它应该从管道读取数据 但是子进程中管道的读取端不会读取数据 int m
  • 使用 JSoup 提取图像 src

    我正在尝试使用 jsoup 从此网页中提取所有图像网址 任何人都可以提供有关如何做到这一点的帮助吗 所有标签的格式都是这样的 但我只需要 src 图像 而不是 ajaxsrc img src http image cdnllnwnl xos
  • 使用 BACK 键隐藏键盘事件

    我注意到在Android Market Application 当您单击搜索按钮时 它会显示键盘 但是当您单击back按钮 搜索EditText变得不可见并且keyboard被隐藏 问题是我无法隐藏EditText按后退键后隐藏键盘后 因为
  • Visual Studio自定义构建步骤规则?

    使用 Visual Studio 2008 当我向 C 项目添加一个不存在的文件时 c cpp h rc或者 IDE 无法识别的任何内容都会弹出一个对话框 询问我是否要为此类文件创建自定义构建步骤规则 有谁知道如何在不添加文件的情 况下进入
  • [A]如何在javafx中使MP3重复播放?

    我希望我的 mp3 文件在完成后再次重复 但我无法创建循环来重复播放我的文件 我使用了这段代码 但只有它在完成后播放我的文件的第一秒 AudioClip myMusic myMusic setCycleCount AudioClip IND
  • 代码检查 - 命名范围参考

    在 Rubberduck 2 0 11 2453 中运行代码检查后 有 4 个范围引用被标记为 成员 Range 隐式引用 ActiveSheet 有问题的范围是指命名范围 是否有必要限定命名范围引用 Private Sub RunORat
  • gcc生成目标文件时创建目录

    gcc o abc def o def c产生def o目录中的文件abc 仅当目录存在时abc 当生成的目标文件的封闭目录不存在时 有没有办法让 gcc 创建一个目录 如果没有 那么提前自动创建目录 尤其是 Makefile 的最简单方法
  • 将 rowversion 转换为 bigint

    在我的 C 程序中 我不想使用字节数组 因此我将 rowversion 数据类型转换为 bigint SELECT CAST version AS BIGINT FROM dbo mytable 所以我收到一个数字而不是字节数组 这种转换总
  • 在 sphinx 文档中包含独立的 HTML 页面

    对于我的项目的大部分文档 我更喜欢标准的 sphinx 布局 然而 对于登陆页面 我更喜欢使用自定义 HTML CSS JS 而不使用普通 sphinx 网站的任何布局 目录或侧边栏 有没有一种方法可以在 sphinx 生成的网站中包含原始
  • 自定义属性未在样式和主题内解析

    我有一个带有自定义主题的 Android 应用程序 该应用程序是 2 3 年前开发的 我有这个风格attr xml资源文件
  • 如何在同一端口 4200 上运行 Angular 4 应用程序和 NodeJS api 以进行生产和开发?

    我已经创建了 Angular 4 应用程序 我可以使用它来运行它ng serve open它运行在localhost 4200 我想要的是我还使用创建了 apinodejs现在在同一个角度项目中我想运行该 APIlocalhost 4200
  • 这个 128 位整数乘法在汇编 (x86-64) 中如何工作?

    我正在阅读计算机系统 程序员的视角作业是描述这个算法是如何工作的 C函数 void store prod int128 dest int64 t x int64 t y dest x int128 y 集会 movq rdx rax cqt
  • 如何写下 rspec 来测试救援块?

    我有这样的方法 def className def method name some code rescue some code and error message end end 那么 如何写下 rspec 来测试救援块 如果你想拯救 就
  • 从 WaitHandle.Wait 构造任务

    我选择返回Task
  • CodeIgniter - 如何检查每种方法使用的会话

    假设我的控制器名为Book 我有很多方法 比如get book read book remove book 如果没有用户登录 则无法使用类中的任何方法 我可以获得user id来自会话 我的问题是 检查是否存在的最佳方法是什么user id
  • 在 Scala 中,如何从可序列化的类型创建 TypeTag? [复制]

    这个问题在这里已经有答案了 在 Scala 反射中 通常可以使用 TypeCreator 从 Type 构造 TypeTag object TypeUtils import ScalaReflection universe def crea
  • Slim 3在中间件中获取当前路由

    我想在中间件类中获取当前 I 路由的名称 以前 在 Slim 2 中 您可以像这样获取当前路线 route this gt app gt router gt getCurrentRoute 但这个功能在Slim 3 0版本中已经被删除了 我