Symfony 2 Bundle - 安装图像资源

时间:2012-11-01 14:33:13

标签: php symfony twitter-bootstrap assetic

我已经通过将相关文件复制到以下位置为Twitter Bootstrap创建了一个包:

  • src/Acme/BootstrapBundle/Resource/public/js
  • src/Acme/BootstrapBundle/Resource/public/css
  • src/Acme/BootstrapBundle/Resource/public/img

接下来,我执行php app/console assets:install web将捆绑资源复制到web文件夹,在我的twig模板中,我可以使用assetic来引入css和javascript,这很好。

我遇到的问题是vanilla bootstrap css指向图像资源的web根目录中的/ img,实际上是/web/bundles/bellabootstrap/img

我可以手动将这些文件复制到所需的位置,甚至创建一个符号链接,但我想知道正确的Symfony / Assetic这样做是什么。

请注意,我对如何执行此操作感兴趣,不仅仅是针对Bootstrap - jqueryui / jquery-datatables等,而其他第三方库也存在完全相同的问题。

感谢。

2 个答案:

答案 0 :(得分:3)

我在一段时间后发现了适当的解决方案:

http://symfony.com/doc/current/cookbook/assetic/asset_management.html#fixing-css-paths-with-the-cssrewrite-filter

Assetic(一个很棒的软件)可以通过各种过滤器运行你的CSS,解决这个问题的是ccsrewrite,正如Symfony文档中所解释的那样,它将修复CSS文件中包含的路径。

答案 1 :(得分:2)

对于JQuery UI(平滑主题)我有:

src/Acme/YourBundle/Resources/public/css/smoothness
src/Acme/YourBundle/Resources/public/css/smoothness/jquery-ui-1.8.16.custom.css
src/Acme/YourBundle/Resources/public/css/smoothness/images
src/Acme/YourBundle/Resources/public/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png

...和其他图像文件(就像它们来自jquery.com网站一样)。

在树枝上我有:

<link type="text/css" rel="stylesheet" href="{{ asset('bundles/acmeyour/css/smoothness/jquery-ui-1.8.16.custom.css') }}"></link>

无需关心png文件的位置,因为一个好的写作css会为你处理它。另一方面,{{asset()}}方法指向正确的目录,因此您不必担心这一点。