我希望在Twig扩展中使用以下内容
$kernel = $container->getService('kernel');
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.png');
但这涉及传入内核,这很糟糕。另外,在尝试这种方法时,无论如何我都无法工作。
如何在Twig Extension中访问资源路径?
扩展已经是服务。我可以使用Assetic给我URL,但我真的想要这条路。
答案 0 :(得分: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
或别的什么。
答案 1 :(得分:0)
如果您只想提供下载服务,则应创建一个完成该任务的路由。
通过这种方式,您将调用路径中的定位器和一个简单的
{{ path('route_that_does_the_locator_thing') }}
会好的。
如果您需要在模板中包含文件(例如CSS,JS ..),则需要将文件声明为资产,可能使用Assetic。