Dưới đây là một ví dụ làm việc hoàn toàn ít nhất là trên Symfony 2.8 . Ví dụ này sử dụng Assetic và được cho là làm việc với tệp nhúng trong css của bạn.
Ở đây arborescence
/app
/src
---/Acme
------/MyBundle
---------/Ressources
------------/public
---------------/css
------/MyOtherBundle
---------/Ressources
------------/public
---------------/css
/web
---/bundles
------/acmemybundle
------/acmemyotherbundle
---/css
------/built
Vì vậy, trong chúng ta hãy nói /src/Acme/MyBundle/Ressources/public/css/main.scss là tập tin với tất cả các tuyên bố mà tôi muốn nhập khẩu trong tôi bó khác (trong trường hợp của tôi tôi sử dụng sass nhưng nó giống với ít hơn).
Trong /src/Acme/MyOtherBundle/Ressources/public/css/mycss.scss tôi sẽ thực hiện:
@import "../../../../MyBundle/Resources/public/css/main";
này đề cập đến vị trí vật lý cổ điển của tập tin, vì vậy IDE của bạn sẽ tìm nó.
Bây giờ phần thú vị.Chúng tôi muốn biên dịch, rút gọn và đổi tên tất cả tệp scss thành chỉ một tệp css. Chúng ta có thể làm điều này với Assetics.
Trong tệp tin twig nơi bạn tải css của bạn (trong trường hợp của tôi /app/Ressources/views/css.html.twig).
{% stylesheets
filter='compass'
filter='?uglifycss'
filter='cssrewrite'
output='css/built/myMinifiedAndCompiledSass.css'
'bundles/mybundle/css/*.scss'
'bundles/myotherbundle/css/*.scss'
%}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}
==> Ở đây bạn phải tham khảo các tập tin từ thư mục/web (để sử dụng 'bó/acmemybundle ..' cú pháp. Bạn cần phải cài đặt các tài sản trong chế độ liên kết tượng trưng. (Ứng dụng php/console tài sản : cài đặt --symlink)
==> bạn có thể đặt bất cứ điều gì bạn muốn trong filemane sản lượng và vị trí kể từ khi bạn ở trong thư mục web
và cuối cùng trong conf.yml bạn
# Assetic Configuration
assetic:
filters:
cssrewrite: ~
sass: ~
compass:
load_paths:
- "/usr/bin/compass"
- "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"
uglifycss:
bin: %kernel.root_dir%/../node_modules/.bin/uglifycss
uglifyjs2:
bin: %kernel.root_dir%/../node_modules/.bin/uglifyjs
. Phần quan trọng ở đây là load_paths trong la bàn. Trong thiết lập cơ bản bạn có la bàn: ~ Bạn cần phải thay đổi nó cho:
compass:
load_paths:
- "/usr/bin/compass"
- "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"
là nó cũng là một lựa chọn để bạn có thể sử dụng assetic để kết hợp các tập tin ít thay vì nhập khẩu chúng ffrom trong nhau? –
Rất khó .. Tôi cần khả năng nhập các tệp LESS khác để mở rộng hành vi của người khác, trong khi tôi đang phát triển. –
Nhìn vào định nghĩa bộ lọc, có vẻ như không có cách nào để vượt qua bất kỳ đường dẫn tùy chỉnh nào (để tìm kiếm bao gồm) https://github.com/symfony/AsseticBundle/blob/master/Resources/config/filters/less.xml. Đây là phương thức để gọi: https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php#L59 – gremo