2012-03-31 6 views
7

Tôi đang cố gắng để Symfony2 làm việc với jQuery UI. Tôi đã nhận được phần JavaScript của nó hoạt động tốt nhưng tôi gặp khó khăn trong việc đưa hình ảnh vào hoạt động.Đường dẫn hình ảnh của bộ lọc cssrewrite Symfony2 là cách tắt

Một điều tôi đọc trong tài liệu Assetic là bộ lọc cssrewrite có thể lấy đường dẫn hình ảnh trong tệp CSS và cập nhật chúng để các đường dẫn trỏ đến đúng vị trí. Điều này trông giống như những gì tôi cần, vì vậy tôi đã kích hoạt cssrewrite. Dưới đây là cách cssrewrite thay đổi đường dẫn của tôi:

// original 
images/ui-icons_222222_256x240.png 

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

Đường dẫn đầu tiên là không tốt. Đường dẫn cssrewrite ít nhất là điểm tới đường dẫn chính xác trong hệ thống tệp nhưng liên quan đến webroot của tôi, đường dẫn cssrewrite bị tắt. Rõ ràng là thư mục app của tôi không được công khai.

Làm cách nào để có được bộ lọc cssrewrite để thay đổi đường dẫn của tôi thành một thứ thực sự hoạt động?

Đây là bản định kiểu của tôi. (Và vâng, tôi biết rằng cách tôi cá nhân bao gồm tất cả những tập tin CSS là ngu ngốc, nhưng tôi không lo lắng về ngay bây giờ.)

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

Xem câu trả lời cho câu hỏi của tôi, nó có ví dụ: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 – apfelbox

Trả lời

11

Có một số known problems với bộ lọc CssRewrite. Đối với những gì tôi biết, nó không hoạt động đúng bằng cách sử dụng ký hiệu @BundleName và cách giải quyết dường như liên kết các tệp CSS bằng cách sử dụng đường dẫn bundles/bundle_name.

Như vậy mã của bạn nên có một cái gì đó như thế này:

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

đâu <your_bundle_name> rõ ràng là tên của nhóm bạn đang làm việc.

CHỈNH SỬA: nhớ cung cấp lệnh php app/console assets:install --symlink web, để liên kết tượng trưng cho nội dung của bạn vào thư mục web.