如何使用Twig获取路径,实际路由和主机域的规范URL

本文概述

  • 具有规范网址的服务器和路由
  • 实际网址
使用twig, 你可以使用path标记生成一个url, 但是此函数仅生成指向你资源的相对路径。
{{path("myroute_edit", {"id":4})}} {# Outputs:     /myroute/edit/4    But wheres my domain :( ?#}

但是有时候, 相对路径不仅是我们所需要的(尽管可以重定向到另一个路径), 例如, 为了优化SEO, 你可能会处理规范的url。
具有规范网址的服务器和路由要检索你域的规范路径(包括协议), 请使用:
{{app.request.getSchemeAndHttpHost()}}

【如何使用Twig获取路径,实际路由和主机域的规范URL】然后, 例如, 如果你需要资源(图像)的规范路径, 则可以使用:
< img src="http://www.srcmini.com/{{app.request.getSchemeAndHttpHost()}}{{asset('path-to/image.png')}}" /> {# or #}{% set domain = app.request.getSchemeAndHttpHost() %}{% set filepath = asset('path-to/image.png')%}< img src="http://www.srcmini.com/{{domain ~ filepath}}" /> {# that should ouput something like #}< img src="http://ourcodeworld.com/path-to/image.png" />

如果你需要检索路线的规范网址, 请使用:
{% set domain = app.request.getSchemeAndHttpHost() %}{% set route = path('myroute_identifier')%}< a href="http://www.srcmini.com/{{domain ~ route}}"> Go to my route< /a>

实际网址要使用twig生成实际的网址, 请使用:
{{ url(app.request.attributes.get("_route"), app.request.attributes.get("_route_params")) }}

例如, 要优化seo, 你应添加
< meta property="og:url" content="{{ url(app.request.attributes.get("_route"), app.request.attributes.get("_route_params")) }}"/> {#For example for the actual article, the path should be #}< meta property="og:url" content="http://ourcodeworld.com/articles/read/105/how-to-get-the-canonical-url-of-a-path-actual-route-and-host-domain-with-twig"/>

    推荐阅读