33

我有几个如下所示的 URL:

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

后一个 URL 指向:

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

但是,如果我尝试通过 iframe 加载,则里面的链接viewA而不是指向:viewBviewA

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

它将指向:

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

如果跟随后者,用户将最终进入 404 页面。

我的问题是:

反正有没有在树枝中以这种方式构建的 url 的绝对路径?

编辑

路由定义为:

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

我试图以这种方式获取绝对路径:

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

但我收到此错误:

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

4

3 回答 3

65

urlor函数采用path路由名称,而不是路径。如果路由需要参数,您可以给它一个关联数组作为可选的第二个参数。

例如:

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

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

于 2013-07-15T20:31:08.433 回答
12

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

{{ app.request.getSchemeAndHttpHost() }}

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

这非常有帮助:D

于 2017-04-23T18:39:10.727 回答
9

你有两种方法可以做同样的事情。 通常,您可以url()在 absolute_url 函数中使用或 path ,例如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 文件夹)。这是您可以使用它们设置捆绑包和主 Web 文件夹中图像的绝对路径的方法:

[app/src/UserBundle/Resources/public/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

[web/css/img/some.jpg]

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

这是 symfony 在渲染电子邮件视图时推荐使用的。 http://symfony.com/doc/current/email.html

于 2016-08-12T21:27:12.870 回答