2012-03-31 29 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目錄。