Routes 使用Zend Framework 2列出来自应用程序的所有路由

Routes 使用Zend Framework 2列出来自应用程序的所有路由,routes,zend-framework2,Routes,Zend Framework2,如何使用Zend Framework轻松列出我们在应用程序中定义的所有路由2 我所说的“路线”是指以下定义的路线: module/[moduleName]/config/module.config.php 在 我需要列出所有的配置,但我不知道如何轻松地做到这一点,文档和论坛现在也帮不了我。你可以找到完整的(合并的)配置或转储路由器本身。无法导出所有路由对象,因此我不得不让您失望 要获取完整配置,请从服务定位器获取: // $sl instanceof Zend\ServiceManager\Se

如何使用Zend Framework轻松列出我们在应用程序中定义的所有路由2

我所说的“路线”是指以下定义的路线:

module/[moduleName]/config/module.config.php

我需要列出所有的配置,但我不知道如何轻松地做到这一点,文档和论坛现在也帮不了我。

你可以找到完整的(合并的)配置或转储路由器本身。无法导出所有路由对象,因此我不得不让您失望

要获取完整配置,请从服务定位器获取:

// $sl instanceof Zend\ServiceManager\ServiceManager

$config = $sl->get('COnfig');
$routes = $config['router']['routes'];
如果您希望仅出于调试目的查看所有路由,可以在路由器对象上使用
var\u dump
或类似工具:

// $sl instanceof Zend\ServiceManager\ServiceManager

$router = $sl->get('Router');
var_dump($router);
要获取路由实例,您可以使用route plugin manager自己构建路由,但我不确定这是您想要的方式…

要获取我使用的所有路由

和控制台命令以获取路由转储:

php vendor/bin/zf.php config list | grep routes
对于Windows用户(未测试):


我需要区分每个模块的路由,以便我们可以在不同的情况下分别使用BjyAuthorize的ACL设置

虽然有不止一种方法可以做到这一点,如所示的读取所有路由(变量已更改):


您可以使用以下代码片段从路由器获取路由列表
$mvcEvent
Zend\Mvc\mvcEvent
的一个实例,
TreeRouteStack
Zend\Router\Http\TreeRouteStack

$router=$mvcEvent->getRouter();
$routes=(数组)$router->getRoutes();
$routes=数组_值($routes);
$routes=计数($routes)>0?数组_键($routes[0]):[];

这对我帮助很大。答案的第一部分起了作用;)我之所以需要这个,是因为我在第一层得到了一个路由,它是可变的,并且基于用户创建的对象。(例如mywebsite.com/user-object-name,我必须通过验证器验证我的一条路由是否已经使用了用户对象名)。谢谢注意:其他(控制台)路由可在$config['console']['router']['routes']下找到;路由器是TreeRouteStack的一个实例。您可以通过
$router->getRoutes())
获得所有路由。这将导致分层打印
php vendor/bin/zf.php config list | grep routes
php vendor/bin/zf.php config list |  findstr /R /C:"[routes]"