在TWIG中,是否可以获得带有枝条变量的链接的绝对URL?

时间:2013-07-15 19:02:49

标签: symfony twig

我有几个网址如下:

{{domainID}}/action/{{userId}}/anotherAction

后一个URL指向:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

但是,如果我尝试从viewA通过iframe加载viewB,请viewA中的链接而不是指向:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

它将指向:

http://localhost/viewB/{{domainID}}/action/{{userId}}/anotherAction

如果用户遵循后者,则用户将以404页面结束。

我的问题是:

无论如何要获得在树枝上建造的网址的绝对路径?

修改

路线定义是:

@Route("/domain/details/{domainId}", name="domain_detailed_view")

我试图通过这种方式获得绝对路径:

{{ url({{domainID}}/action/{{userId}}/anotherAction) }}

但是我收到了这个错误:

  

哈希键必须是带引号的字符串,数字,名称或表达式   括在括号中

3 个答案:

答案 0 :(得分:57)

urlpath函数采用路由名称,而不是路径。如果路由需要参数,则可以为其提供关联数组作为可选的第二个参数。

例如:

{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}

http://symfony.com/doc/master/reference/twig_reference.html

答案 1 :(得分:7)

我知道它已经过时并且已经回答了,但是使用了symfony 3&你可以做的枝条:

{{ app.request.getSchemeAndHttpHost() }}

/* will match even port :) i.e.
 * http://localhost:8000
 * http://localhost
 * http://example.com
 */

非常有帮助:D

答案 2 :(得分:5)

您有两种方法可以做同样的事情。 通常你可以使用url()或absolute_url函数内的路径,如 absoulute_url(path(...))。请考虑以下事项:

// example 1:
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}
// example 2:
{{ absolute_url(path('domain_detailed_view', { 'domainId': domainId, 'userId': userId })) }}">

// note - those two do the same thing

通常,从Symfony 2.7开始,你可以将absolute_url()与断言和相对路径一起使用(相对于web / root文件夹)。这就是你如何使用它们来设置bundle和main web文件夹中图像的绝对路径:

[应用程序/ SRC / UserBundle /资源/公共/ IMG / image.jpg的]

<img src="{{ absolute_url(asset('bundle/user/img/image.jpg')) }}" /> // new way since 2.7 up
<img src="{{ asset('bundle/user/img/image.jpg', absolute: true ) }}" /> // old way below 2.7 removed in symfony 3.0

[幅/ CSS / IMG / some.jpg]

<img src="{{ absolute_url('css/img/some.jpg') }}" /> 

这是symfony建议在呈现电子邮件视图时使用的内容。 http://symfony.com/doc/current/email.html