tôi đã thêm một số globals cành lá để đối phó với điều này
# config.yml
framework:
templating:
engines: ['twig']
assets_version: 'dev'
assets_version_format: "%%2$s/%%1$s"
session:
cookie_domain: %session.cookie_domain%
twig:
globals:
assets_version: dev
static_assets_base_url: %static_assets_base_url%
static_images_base_url: %static_images_base_url%
static_image: %static_images_base_url%/dev/ # I didn't know how to reference the assets_version, so this is the same value
static_content: %static_images_base_url%/
# parameters.yml
parameters:
session.cookie_domain: .myapp.dev
static_assets_base_url: http://myapp-static.dev
static_images_base_url: http://myapp-static.dev/path/to/web
- Đối với css phiên bản và biên soạn/js vv Tôi in
{{ static_assets_base_url ~ asset_url }}
.
- Đối với hình ảnh được phiên bản, v.v, tôi in
{{ static_image ~ 'bundles/mybundle/img/icon.jpg' }}
.
- Đối với hình ảnh không được phiên bản, v.v., tôi in
{{ static_content ~ 'content/img/upload-123.jpg' }}
.
Tôi không nhớ chính xác lý do tại sao tôi đã làm điều này, nhưng nó liên quan đến lỗi xác thực (thật ngạc nhiên). Nó chỉ không thể xử lý đường dẫn một cách chính xác, như đôi khi nó không thêm phiên bản, hoặc nó làm sai.
Sẽ là một nỗi đau nếu bạn phải sửa đổi phiên bản nội dung theo cách thủ công, vì vậy, bạn nên có sẵn một tập lệnh triển khai để thực hiện việc này.
Oh và nhớ rằng Assetic sẽ không đổ các tài sản đã biên dịch vào các thư mục được chỉ định, đây là một vấn đề đã biết. Vì vậy, bạn phải thêm các liên kết của riêng bạn cho các thư mục này.
EDIT
Tham số 'session.cookie_domain' cho phép bạn sử dụng cùng một tên miền và tránh cookie, nếu ứng dụng của bạn trong một tên miền phụ. Nếu ứng dụng của bạn không sử dụng tên miền phụ, bạn sẽ phải sử dụng tên miền riêng cho các nội dung tĩnh.
và phải làm gì với hình ảnh? – unairoldan
@ Ztere0 câu trả lời trước của tôi là hoàn toàn sai. – meze
Hình ảnh là tài sản, tải chúng bằng hàm asset() –