rkm*_*max 56 routing symfony twig
我有一个Symfony2(2.2)的应用程序.当我想发送邮件时,我遇到路径问题,这些路径都是相对路径,显然在电子邮件中不起作用
用于渲染我正在使用的路径:
<a href="{{ path('route_name', {'param' : value}) }}">A link</a>
Run Code Online (Sandbox Code Playgroud)
和资产:
<img src="{{ asset('bundle/myname/img/image.gif') }}" alt="Title"/>
Run Code Online (Sandbox Code Playgroud)
前面的示例工作正常,但路径是相对的,因此我需要附加域.我可以这样做:
<a href="http://domain.com{{ path('route_name', {'param' => param1}) }}">A link</a>
Run Code Online (Sandbox Code Playgroud)
但这不是我问题的最佳解决方案,因为我有不同的域名.
我找到了具有该url功能的路径解决方案,但我仍然需要一个资产解决方案.
Net*_*tro 110
Symfony 2.7有一个新的absolute_url,可用于生成绝对URL. http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component#template-function-changes
它将适用于这两种情况或路径字符串:
<a href="{{ absolute_url(path('route_name', {'param' : value})) }}">A link</a>
Run Code Online (Sandbox Code Playgroud)
和资产:
<img src="{{ absolute_url(asset('bundle/myname/img/image.gif')) }}" alt="Title"/>
Run Code Online (Sandbox Code Playgroud)
或者对于任何字符串路径
<img src="{{ absolute_url('my/absolute/path') }}" alt="Title"/>
Run Code Online (Sandbox Code Playgroud)
在那些树案例中,你最终会得到一个绝对的URL
http://www.example.com/my/absolute/path
Run Code Online (Sandbox Code Playgroud)
Sir*_*ton 79
对于Symfony 2.7和更新版本
在这里看到这个答案.
第一个工作选择
{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('bundles/acmedemo/images/search.png') }}
Run Code Online (Sandbox Code Playgroud)
第二工作选项 - 首选
刚刚使用干净的新Symfony副本进行了快速测试.还有另一个选项,它结合了scheme和httpHost:
{{ app.request.getSchemeAndHttpHost() ~ asset('bundles/acmedemo/images/search.png') }}
{# outputs #}
{# http://localhost/Symfony/web/bundles/acmedemo/css/demo.css #}
Run Code Online (Sandbox Code Playgroud)
小智 51
来自Symfony2文档:Symfony 2.5中引入了资产的绝对URL.
如果需要资产的绝对URL,可以将第三个参数(或绝对参数)设置为true:
例:
<img src="{{ asset('images/logo.png', absolute=true) }}" alt="Symfony!" />
Run Code Online (Sandbox Code Playgroud)
Que*_* S. 23
Daniel的回答似乎现在正常,但请注意,asset现在不推荐使用twig 函数生成绝对URL :
DEPRECATED - 使用Twig asset()函数生成绝对URL在2.7中已弃用,将在3.0中删除.请改用absolute_url().
以下是官方公告:http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component#template-function-changes
你必须使用absolute_url树枝功能:
{# Symfony 2.6 #}
{{ asset('logo.png', absolute = true) }}
{# Symfony 2.7 #}
{{ absolute_url(asset('logo.png')) }}
Run Code Online (Sandbox Code Playgroud)
有趣的是,它也适用于path功能:
{{ absolute_url(path('index')) }}
Run Code Online (Sandbox Code Playgroud)
che*_*fly 13
您可能想要使用assets_base_urls配置.
framework:
templating:
assets_base_urls:
http: [http://www.website.com]
ssl: [https://www.website.com]
Run Code Online (Sandbox Code Playgroud)
http://symfony.com/doc/current/reference/configuration/framework.html#assets
请注意,自Symfony 2.7以来配置不同:
framework:
# ...
assets:
base_urls:
- 'http://cdn.example.com/'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88585 次 |
| 最近记录: |