我正在尝试从 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/