symfony - 如何获取 Symfony2 中 Controller 的所有路由列表?

标签 symfony indexing controller routes symfony-2.1

我有一个实现所有路由/URL的 Controller 。 我的想法是为所有帮助页面提供通用索引。

有没有办法在 Symfony2 中获取 Controller (从 Controller 内部)定义的所有路由?

最佳答案

您可以做的是将 cmd 与(最高 SF2.6)一起使用

php app/console router:debug

对于 SF 2.7,命令是

php app/console debug:router

对于 SF 3.0,命令是

php bin/console debug:router

它会向您显示所有路线。

如果您为每个 Controller 定义一个前缀(我推荐),您可以使用

php app/console router:debug | grep "<prefixhere>"

显示所有匹配的路线

显示 Controller 中的所有路由,输出基本相同 我将在 Controller 中使用以下内容(这与 symfony 组件中的 router:debug 命令中使用的方法相同)

/**
 * @Route("/routes", name="routes")
 * @Method("GET")
 * @Template("routes.html.twig")
 *
 * @return array
 */
public function routeAction()
{
    /** @var Router $router */
    $router = $this->get('router');
    $routes = $router->getRouteCollection();

    foreach ($routes as $route) {
        $this->convertController($route);
    }

    return [
        'routes' => $routes
    ];
}


private function convertController(\Symfony\Component\Routing\Route $route)
{
    $nameParser = $this->get('controller_name_converter');
    if ($route->hasDefault('_controller')) {
        try {
            $route->setDefault('_controller', $nameParser->build($route->getDefault('_controller')));
        } catch (\InvalidArgumentException $e) {
        }
    }
}

routes.html.twig

<table>
{% for route in routes %}
    <tr>
        <td>{{ route.path }}</td>
        <td>{{ route.methods|length > 0 ? route.methods|join(', ') : 'ANY' }}</td>
        <td>{{ route.defaults._controller }}</td>
    </tr>
{% endfor %}
</table>

输出将是:

/_wdt/{token} 任意 web_profiler.controller.profiler:toolbarAction 等等

关于symfony - 如何获取 Symfony2 中 Controller 的所有路由列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15943780/

相关文章:

php - 如何在 Symfony 中解析 phpdoc 属性类型?

c# - C# 是否有索引数组是像 PHP 一样的字符串?

angularjs - $http 通过服务调用,然后将数据拉入 Controller (AngularJS)

error-handling - 动态设置错误 Action 的布局文件

mysql - 在 symfony2 中使用控制台时如何选择与数据库的连接

symfony - 奇怪的 HWIOAuthBundle 和 Twig 错误 "No resource owner with name ' google'。”

php - 如何将 Twig 呈现的模板作为 JSON 响应的一部分返回?

Java - 从具有两个给定索引的数组返回一个数组

C++ 列表索引查询

php - CakePHP 获取表单值并检查数据库(如果存在)