Symfony2 - 获取TWIG模板中的当前URL或路由?

Wiz*_*ard 10 php symfony twig

我的路线是

admin:
      path:     /admin/
      defaults: { _controller: CatalogWebBundle:Admin:admin }
Run Code Online (Sandbox Code Playgroud)

我如何在PHP模板中获取路由名称?

Tom*_*oms 14

获取当前URL

$request->getRequestUri(); 要么 app.request.uri

至于路线本身,最佳做法是将其作为参数注入控制器,请参阅此处的文档.你可以使用$request->attributes->get('_route')app.request.attributes.get('_route'),但它是不是可靠的,例如,它不会与转发工作,你都转发到控制器,而不是一个路径.根据Fabien(@fabpot)的创建者,它实际上仅用于调试目的,所以我不会依赖它来进行未来的升级.

边注

请记住尽可能避免$request->get(),所以不要$request->get('_route')像我在类似问题的答案中看到的那样

如果您不需要控制器的灵活性,最好从相应的公共属性显式获取请求参数(属性,查询,请求)

原因是它将查看所​​述公共属性(属性,查询和请求)而不仅仅是一个(属性),使其慢得多


Ben*_*der 6

直接在Twig做好事但你仍然可以.更好的方法是将其作为控制器的参数传递.

在Twig中获取路由参数.

{{ app.request.attributes.get('_route_params') }}
Run Code Online (Sandbox Code Playgroud)

在Twig中获取整个包名称.

{{ app.request.attributes.get("_controller") }}
Run Code Online (Sandbox Code Playgroud)

在Twig中获取路线名称.

{{ app.request.attributes.get('_route') }}
Run Code Online (Sandbox Code Playgroud)