【问题标题】:Including SVG in Twig template在 Twig 模板中包含 SVG
【发布时间】:2018-04-06 15:18:30
【问题描述】:

我正在酌情将我的资产从 PNG 更改为 SVG,但是我很难将这些 SVG 包含在我的 Twig 模板中。

我正在尝试像这样包含 SVG:

{{ source('/assets/img/crmpicco-horizontal-logo.svg') }}

但是,这会导致以下错误:

找不到模板“/assets/img/crmpicco-horizo​​ntal-logo.svg” (调查: /Library/WebServer/Documents/crmpicco/symfony/app/Resources/views, /Library/WebServer/Documents/crmpicco/symfony/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form)。

为什么我不能将此 SVG 包含在与其他资产相同的目录中?具体来说,我有兴趣找出为什么不能将 SVG 视为 Assetic 的资产。

【问题讨论】:

标签: php symfony svg twig symfony-2.8


【解决方案1】:

这是我使用的解决方案(Twig with Symfony 4 and Webpack Encore):

  1. 在您的 twig 配置中,声明您的公共路径:
twig:
    paths:
        "%kernel.project_dir%/public": public_path
  1. 像这样加载您的 svg 资产:
{{ source('@public_path'~asset('build/images/your_file.svg')) }}

【讨论】:

  • 太棒了!这应该是正确的答案。
【解决方案2】:

您必须使用树枝扩展名crmpicco-horizontal-logo.svg.twig 重命名您的 svg 文件并执行此操作:

{% include ":svg:crmpicco-horizontal-logo.svg.twig" %}

文件夹svg 在本例中位于 app/Ressources/views 中

【讨论】:

  • 谢谢,它不能与其他资产一起放在文件系统中吗?
  • 因为您使用includeinclude twig 函数|标签只能与app/Ressources/views 或bundles/Ressources/views 中的资源一起使用。但我不知道为什么我们必须在 Symfony 中使用这个解决方案。当静态集成与项目不同时,我必须创建一个脚本来复制/过去其他文件夹中的 svg 资产并重命名文件。我不太喜欢这样,但它的作品
  • 我找到了这个Include a template which is in the web folder。也谢谢我不知道这是可能的:)
  • 当然。但是,为什么我不能使用 asset 指向 SVG?仅仅是因为它不是图像吗?
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
相关资源
最近更新 更多