0

我希望在 Twig Extension 中使用以下内容

$kernel = $container->getService('kernel');
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.png');

但这涉及传递内核,这很糟糕。另外,在尝试这种方法时,我无论如何都无法让它工作。

如何访问 Twig 扩展中的资源路径?

扩展程序已经是一项服务。我可以使用 Assetic 给我 URL,但我真的想要路径。

4

2 回答 2

1

我也有类似的需求:我需要将图像的 url 传递给过滤器,以便在for循环中显示它并构建一个字符串。

我以这种方式将 URL 直接传递给过滤器:

{%  image '@AppBundle/Resources/public/images/my_asset.png' %}
    {% set resolved_asset_url = asset_url %}
{% endimage %}

{{ my_var|filter_name(resolved_asset_url)|raw(html) }}

通过这种方式,Twig 模板解析了正确资源的 URL,将其设置为变量,然后我从模板本身内部将其传递给过滤器,而无需处理kernel或其他任何事情。

于 2016-01-07T11:28:51.727 回答
0

如果您只想提供下载服务,您应该创建一个完成该任务的 Route。

这样,你就可以调用路由里面的定位器了,一个简单的

{{ path('route_that_does_the_locator_thing') }}

会没事的。

如果您需要在模板中包含文件(例如 CSS、JS..),则需要将文件声明为资产,可能使用 Assetic。

于 2015-02-12T11:19:29.693 回答