2012-12-28 27 views
8

tôi bao gồm CSS của tôi với đoạn mã sau:Symfony2 và Assetic - cssrewrite hoạt động hoàn hảo cho dev, không cho sản

{% stylesheets 'bundles/majorproductionssewingdivasite/css/*.css' filter='cssrewrite' %} 
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> 
{% endstylesheets %} 

Trong dev, điều này cho phép tôi sử dụng sprites hình ảnh mà không cần bất kỳ vấn đề. Kết quả là URL để sprite của tôi là:

http://localhost/diva/web/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

Nhưng, trong sản, nó được ánh xạ tới:

http://localhost/diva/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

Thông báo thiếu thư mục web.

Mã được tạo trong tệp CSS là đúng, và tất cả CSS của tôi (cả khối chữ 'dev' và khối kết xuất thừa được hoàn thành) đều ở số web/css/. Bất kỳ ý tưởng nào về lý do tại sao môi trường sản xuất bỏ qua thư mục web?

EDIT: những gì là kỳ lạ là cả hai dev và sản sinh ra cùng một URL trong CSS bản thân:

url('../../bundles/majorproductionssewingdivasite/images/diva-sprites.jpg')

Trả lời

20

Giải pháp là để đổ tài sản trong môi trường sản:

$ app/console assetic:dump --env=prod 
+7

Đây là câu trả lời đúng. Nhưng bạn có thể cần phải xóa bộ nhớ cache trước hết 'php app/console cache: clear --env = prod'. Dumping các tập tin tài sản trước khi làm sạch bộ nhớ cache đã không giải quyết được vấn đề cho tôi. Tôi là một chút mới để Symfony2, nhưng từ những gì tôi đã chỉ có kinh nghiệm, có vẻ như để đổ các tập tin tài sản từ bộ nhớ cache, không phải từ các tập tin vật lý. – cartbeforehorse

+0

OMG làm thế nào tôi có thể bỏ lỡ này @ _ @ – GusDeCooL

0

Trong chế độ gỡ lỗi, Assetic 1.1 cũng có vẻ viết lại CSS ngay cả khi nó không nằm trong thẻ {% stylesheets%}. Vì vậy, nó có giá trị kiểm tra đó là khi bạn tắt gỡ lỗi trong sản xuất.

9

Hãy nhớ Xóa bộ nhớ cache

php app/console cache:clear --env=prod --no-debug 

berore

php app/console assetic:dump --env=prod --no-debug 
1

Cũng nên nhớ để assetic cấu hình thích hợp, trong config_prod.yml bạn thiết lập như sau:

assetic: 
    use_controller: false 

Edit: Như đã nói trong Symfony docs (trên thực tế trong chương đề cập đến dev môi trường): nói Symfony để ngừng cố gắng để xử lý những tập tin tự động

+0

Vui lòng bao gồm một số chi tiết bổ sung để làm cho câu trả lời của bạn hoàn thành – amonk

+0

Bạn đã đúng, nhưng cấu hình thông thường đã là 'use_controller: '% kernel.debug%'' – Arno

Các vấn đề liên quan