2012-03-31 18 views
7

Próbuję przekonać Symfony2 do pracy z jQuery UI. Dostałem część JavaScript działa dobrze, ale mam problem z uruchomieniem obrazów.Ścieżki obrazków Symfony2 cssrewrite są daleko odbiegające

Jedną rzeczą, którą czytam w dokumentach Assetic, jest filtr cssrewrite, który może pobierać ścieżki obrazów w plikach CSS i aktualizować je tak, aby ścieżki wskazywały właściwe miejsca. Wyglądało to dokładnie tak, jak potrzebowałem, więc włączyłem cssrewrite. Oto jak cssrewrite zmieniło moje ścieżki:

// original 
images/ui-icons_222222_256x240.png 

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

Pierwsza ścieżka nie jest dobre. Ścieżka cssrewrite wskazuje co najmniej poprawną ścieżkę w systemie plików, ale względem mojego webroota ścieżka cssrewrite jest wyłączona. Oczywiście mój katalog app nie jest publiczny.

Jak uzyskać filtr cssrewrite, aby zmienić moje ścieżki na coś, co faktycznie zadziała?

Oto moje włączenie arkusza stylów. (I tak, wiem, że jestem w tym sposób indywidualnie wszystkie te pliki CSS jest głupi, ale nie martwię się o tym już teraz.)

{% 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

Zobacz odpowiedź na moje pytanie, ma działający przykład: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 – apfelbox

Odpowiedz

11

Istnieją pewne known problems z filtrem CssRewrite. Z tego, co wiem, nie działa poprawnie, używając notacji @BundleName, a obejście problemu wydaje się łączyć pliki CSS przy użyciu ścieżki bundles/bundle_name.

Tak więc kod powinien być mniej więcej tak:

{% 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 %} 

Gdzie <your_bundle_name> jest oczywiście nazwa pakietu, nad którym pracujesz.

EDIT: pamiętać, aby dać komendę php app/console assets:install --symlink web, aby symbolicznie połączyć swoje aktywa w katalogu web.

Powiązane problemy