如何使Assetic自动将CSS背景图像从Bundle移动到Web目录



在使用Alexandre Salomé的[尽管如此出色]"Sass,Compass,and Assetic in 10 minutes"时遇到了很多麻烦,我终于获得了Compass Assetic过滤器,可以将我的SCSS文件转换为项目/web目录中的CSS文件。我甚至认为我已经有了compass image-url()函数来引用图像

不幸的是,我不知道如何将图像保存在我的捆绑包中,并在需要时让Assetic将其正确复制或重写到/web目录中。他们就是不去那里。目前(…似乎这可能是预期的功能?)我只是将它们复制到/web/images目录中。这不可能是对的。。。正确的

这不是assetic可以也应该做的事情,而是Symfony可以做的事情。

首先,您应该将资产放置在捆绑包结构中的正确位置。这些应该放在Resources/public目录中。这里是样式表、脚本、图像和所有其他公共事物的所在地。有关捆绑包结构的更多信息,请阅读文档:"如何使用构建捆绑包的最佳实践"

FrameworkBundle附带了一个名为assets:install的usefull命令,它将把所有bundle中的所有资产安装到web/bundles/<bundle_name>目录中。每次使用composer updatecomposer install命令时都会运行此命令。当您更新捆绑包中的一些资产时,您可以运行此命令将所有内容复制到web目录:

$ php app/console assets:install

有时,您不希望每次更新某些内容时都运行此命令。例如,如果您开始设置页面样式,则需要每分钟运行一次该命令。如果服务器支持使用符号链接,则可以使用--symlink选项。这样,您就不需要每次都运行该命令。

最新更新