php - 如何从 Slim 3 php 框架访问所有路由?

标签 php slim psr-7

我正在尝试从 Slim 框架中定义的路由构建一个动态下拉菜单,这是我的问题 - 有没有办法从某种数组访问所有定义的静态路由?

例如,如果我这样定义我的路线:

// Index page: '/'
require_once('pages/main.php');

// Example page: '/hello'
require_once('pages/hello.php');

// Example page: '/hello/world'
require_once('pages/hello/world.php');

// Contact page: '/contact'
require_once('pages/contact.php');

每个文件都是一个单独的页面,如下所示

// Index page
$app->get('/', function ($request, $response, $args) {

    // Some code

})->setName('index');

我想从某种数组访问所有这些已定义的路由,然后使用该数组在我的模板文件中创建一个无序的 HTML 列表。

<ul>
  <li><a href="/">Index</a></li>
  <li><a href="/hello">Hello</a>
    <ul>
       <li><a href="/hello/world">World</a></li>
    </ul>
  </li>
  <li><a href="/contact">Contact</a></li>
</ul>

每当我改变定义的路线时,我希望这个菜单随之改变。有办法实现吗?

最佳答案

快速搜索 Router class in GitHub project for Slim展示了一个公共(public)方法 getRoutes(),它返回路由对象的 $this->routes[] 数组。从路由对象中,您可以使用 getPattern() 方法获取路由模式:

$routes = $app->getContainer()->router->getRoutes();
// And then iterate over $routes

foreach ($routes as $route) {
    echo $route->getPattern(), "<br>";
}

编辑:添加示例

关于php - 如何从 Slim 3 php 框架访问所有路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40505551/

相关文章:

PHP 新手 : How to write good code

php - 从多个文件中提取数据

php - 在 slim 框架中使用 PDO 的方法是什么?

php - 从资源创建流

Slim 3 - 如何添加404模板?

php - 如何检查数字顺序是否正确?

javascript - html 返回中的 Phantomjs 编码问题

php - 如何在 slim 4 中设置和注入(inject)多个 PDO 数据库连接?

c# - .NET 3.5CF WebRequest 到 Slim Framework

php - Psr7 Http Message,为什么不可变?