2012-03-31 28 views
7

我想让Symfony2与jQuery UI一起工作。我已经得到它的JavaScript部分工作得很好,但我无法使图像正常工作。Symfony2 cssrewrite过滤器的图像路径是关闭

我在Assetic文档中读到的一件事是,cssrewrite过滤器可以在CSS文件中获取图像路径并更新它们,以便路径指向正确的位置。这看起来正是我所需要的,所以我启用了cssrewrite。以下是cssrewrite如何更改我的路径:

// original 
images/ui-icons_222222_256x240.png 

// using cssrewrite 
../../../app/Resources/public/css/themes/base/images/ui-icons_222222_256x240.png 

第一条路是不好的。 cssrewrite路径至少指向文件系统中的正确路径,但相对于我的webroot,cssrewrite路径是关闭的。很明显我的app目录不公开。

如何获得cssrewrite过滤器将我的路径更改为实际可行的某些内容?

这是我的样式表包含。 (是的,我知道我单独包括所有这些CSS文件的方式是愚蠢的,但现在我不担心这种权利。)

{% stylesheets 
     '../app/Resources/public/css/*' 
     '../app/Resources/public/css/themes/base/jquery.ui.accordion.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.all.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.autocomplete.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.base.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.button.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.core.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.datepicker.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.dialog.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.progressbar.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.resizable.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.selectable.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.slider.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.tabs.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.theme.css' 
    %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 
+0

请参阅我的问题的答案,它有一个工作示例:http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 – apfelbox 2012-10-05 01:40:33

回答

11

有一些known problems与CssRewrite过滤器。据我所知,它通过使用@BundleName表示法无法正常工作,而解决方法似乎是通过使用bundles/bundle_name路径链接CSS文件。

因此,你的代码应该是这样的:

{% stylesheets filter='cssrewrite' 
     'bundles/<your_bundle_name>/css/*' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.accordion.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.all.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.autocomplete.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.base.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.button.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.resizable.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.selectable.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.slider.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.tabs.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.theme.css' 
    %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 

哪里<your_bundle_name>显然是您正在使用的包的名称。

编辑:记得给php app/console assets:install --symlink web命令,以符号链接您的资产到web目录。