2012-03-29 45 views
32

Tôi cần một số lời khuyên về cách làm việc với các tài sản trong Symfony 2. Ví dụ, chúng ta phải luôn luôn thực hiện các nội dung: cập nhật mỗi khi một hình ảnh được thêm vào? Tôi biết Assetic chăm sóc quản lý trên các tệp css và javascript nhưng về hình ảnh thì sao? Thực hành tốt nhất cho việc phát triển front-end với Symfony 2 là gì? Làm thế nào để các bạn thiết lập các tệp css, hình ảnh và js trong ứng dụng của mình để dễ dàng phát triển, triển khai và thay đổi?Symfony 2 - Làm việc với các tài sản

+0

là 'tài sản: update' một lệnh thực? Tôi đã không tìm thấy nó đề cập đến bất cứ nơi nào khác, và không thể tìm thấy nó trong Symfony/Assetic codebase. Nếu nó tồn tại, tôi muốn được biết thêm về nó. – Sam

+0

Liên quan: http://stackoverflow.com/questions/12123069/how-to-properly-change-what-composer-or-symfony2-does-after-running-composer-up – Kzqai

Trả lời

74

Về hình ảnh, nếu bạn thêm nó vào thư mục công cộng của bạn, tôi nghĩ không cần phải thực hiện assets:update

Tuy nhiên, nếu bạn thêm hình ảnh trong thư mục nguồn của một gói, bạn có thể phải, tùy thuộc vào Hệ điều hành của bạn và các tùy chọn bạn đã sử dụng khi được gọi là assets:install

Nếu bạn đang sử dụng một hệ điều hành hỗ trợ liên kết tượng trưng (linux, OS X và tôi đoán tất cả HĐH nhưng Windows), bạn có thể cài đặt nội dung đang gọi (Tôi không nhớ chính xác cuộc gọi, điều quan trọng ở đây là tùy chọn liên kết tượng trưng):

php app/console assets:install web --symlink 

Bằng cách này, thay vì có bản sao tài nguyên của từng gói, bạn sẽ có một liên kết tượng trưng, ​​do đó không cần phải cập nhật. Nếu bạn có một hệ điều hành không hỗ trợ các liên kết tượng trưng, ​​tôi nghĩ bạn sẽ phải tiếp tục cập nhật hoặc cài đặt lại tài sản (trên thực tế, tôi luôn sử dụng assets:install, tôi không biết có một tùy chọn cập nhật: P). Về việc thiết lập, tôi thường đặt tất cả css, js, hình ảnh và bất kỳ tài nguyên công cộng nào trong một nhóm nếu nó chỉ được sử dụng trong gói và đặt nó vào thư mục công cộng nếu nó được nhiều gói sử dụng hoặc tôi sử dụng có kế hoạch sử dụng nó trong các gói khác.

+5

'symlink' cũng hoạt động trên Windows – DoubleYo

+1

Ngoài ra, nếu bạn đang sử dụng Composer để cập nhật gói nhà cung cấp của mình, đừng quên đặt "" thêm ": {" symfony-asset-install ":" symlink "}' vào tệp composer.json của bạn ([xem tài liệu ] (http://symfony.com/doc/current/book/installation.html#updating-vendors)). – Geert

+1

'symlink' cũng hoạt động trên Windows khi bạn đang chạy cmd (hoặc git bash) trong chế độ Quản trị viên. :) bởi vì Assetic làm việc với http://php.net/manual/en/function.symlink.php được hỗ trợ trên Windows. – Athlan

2

Tính đến Symfony 2.7 này sẽ tạo liên kết tượng trưng tương đối trong web thư mục:

php app/console assets:install web --symlink --relative 

Trong composer.json add:

"extra": { 
    "symfony-assets-install": "relative" 
} 

Điều này cũng sẽ tạo liên kết tượng trưng tương đối trên composer update.

+0

Vì composer.json được cam kết và do đó được sử dụng trong khi cài đặt trên môi trường sản xuất, tôi không chắc chắn bạn muốn điều này trong composer.json của bạn trực tiếp. – Kzqai

+0

Xem: http://stackoverflow.com/a/15797829/69993 – Kzqai

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