gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:15:39 24 4
gpt4 key购买 nike

我有一个实现所有路由/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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com