在 Twig Extension 中使用 locateResource
Using locateResource inside Twig Extension
我希望在 Twig Extension 中使用以下内容
$kernel = $container->getService('kernel');
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.png');
但这涉及传递内核,这很糟糕。另外,我在尝试这种方法时仍然无法正常工作。
如何访问 Twig Extension 中的资源路径?
该扩展程序已经是一项服务。我可以使用 Assetic 给我 URL,但我真的想要路径。
如果您只想提供下载服务,您应该创建一个完成该任务的路由。
通过这种方式,您将在路线内调用定位器,一个简单的
{{ path('route_that_does_the_locator_thing') }}
会好的。
如果您需要在模板中包含一个文件(例如 CSS、JS..),您需要将您的文件声明为资产,可以使用 Assetic。
我有类似的需求:我需要将图像的 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
或其他东西。
我希望在 Twig Extension 中使用以下内容
$kernel = $container->getService('kernel');
$path = $kernel->locateResource('@AdmeDemoBundle/path/to/file/Foo.png');
但这涉及传递内核,这很糟糕。另外,我在尝试这种方法时仍然无法正常工作。
如何访问 Twig Extension 中的资源路径?
该扩展程序已经是一项服务。我可以使用 Assetic 给我 URL,但我真的想要路径。
如果您只想提供下载服务,您应该创建一个完成该任务的路由。
通过这种方式,您将在路线内调用定位器,一个简单的
{{ path('route_that_does_the_locator_thing') }}
会好的。
如果您需要在模板中包含一个文件(例如 CSS、JS..),您需要将您的文件声明为资产,可以使用 Assetic。
我有类似的需求:我需要将图像的 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
或其他东西。