【问题标题】:Symfony/Twig "Asset" function in dev mode开发模式下的 Symfony/Twig “资产”功能
【发布时间】:2014-07-25 15:01:12
【问题描述】:

我正在尝试在这样的 Twig 模板中渲染图像:

<img src="{{ asset('bundles/mybundle/images/no-image.png') }}" alt="no image available" />

它被渲染成这样(带有前导斜杠):

<img src="/bundles/mybundle/images/no-image.png" alt="no image available" />

这会导致服务器在 http://myserver.com/bundles/mybundle/images/no-image.png 中查找图像

问题是当我在开发模式下查看页面时,它不会生成正确的资产 url。应该是这样的:

<img src="bundles/mybundle/images/no-image.png" alt="no image available" />

这会导致服务器查看正确的位置:

http://myserver.com/app_dev.php/bundles/mybundle/images/no-image.png

有没有办法解决这个问题?我希望开发模式下的图像通过 app_dev.php 运行

【问题讨论】:

  • 为什么图像应该通过 app_dev 运行?
  • 我的原因是因为我为 dev 和 prod 设置了不同的错误报告设置,并且图像正在通过 prod,这会触发我在 dev 中工作时不想收到的电子邮件错误。跨度>
  • 图片不经过任何前端控制器,你可以看看你的 /web/.htaccess 文件,你会发现文件是直接提供的
  • 如果我使用assetic,他们会,所以当只使用asset功能时,他们不会?
  • @StevenMusumeche 如果你使用资产,他们只会在开发模式下这样做,所以你不需要每次都转储文件。仅对需要 PHP 运行的文件使用前端控制器。

标签: symfony twig


【解决方案1】:

Assetic 使用 PHP 来组合、缩小和修改资产。在开发中,这些资产可以继续更改,您不希望每次更改某些内容时都执行转储命令。这就是为什么 Assetic 有一个 use_controller 设置,因此assetic 在请求时组合、缩小和修改文件,然后将响应作为正确的 CSS 或 JS 文件返回。

对于普通资产,如图像、JS 文件、CSS 文件等,没有任何动态可运行。浏览器应该简单地从存储图像的服务器请求图像。所以这不应该通过框架。

【讨论】:

  • 所以我的问题是因为我在开发服务器上,所以图像通常不存在。由于它们试图通过“prod”模式访问,因此我试图避免生产的错误报告配置被激活(电子邮件日志等)。如果不将所有图像复制到我的开发服务器(100+ GB),这可能吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多