2011-09-28 33 views
8

Tôi bắt đầu xây dựng một trang web với Symfony2 và tôi đã có một chút khó khăn về tài nguyên.Nơi để đặt tài nguyên cốt lõi trong Symfony2?

Sách Symfony2 nói rằng mọi tệp tài nguyên phải nằm trong Gói, nhưng những hình ảnh cần thiết nhất, tệp .js và .css mà tôi sử dụng trong tệp base.html.twig trên mỗi trang thì sao?

Tôi có nên tạo một CoreBundle hoặc một cái gì đó tương tự, chỉ cho những tệp này hoặc tôi nên đặt chúng trong thư mục app \ Resources (hoặc trực tiếp trong thư mục web)? Nếu tôi có thể sử dụng thư mục app \ Resources cho chúng, làm thế nào tôi có thể tham khảo các tệp này từ mẫu?

Thực hiện một gói chỉ vì điều này có vẻ hơi không cần thiết và các url nội dung cho các tệp này cũng quá xấu (ví dụ: '/bundles/projectcore/images/logo.jpg') theo ý kiến ​​của tôi.

Thực tiễn tốt nhất ở đây là gì?

Trả lời

6

Tôi đã có các tình huống mà tôi đã lưu trữ tất cả các tệp trong/web (tức là/web/js) và những người khác mà tôi đã lưu trữ chúng trong gói 'Nội dung'.

Nếu bạn đang phát triển một gói sẽ được sử dụng lại trong nhiều dự án, bạn nên lưu trữ nội dung trong gói đó. Tôi nghĩ bạn sẽ xuất bản/cài đặt các tài sản đó vào thư mục web bằng cách sử dụng dòng lệnh. Ví dụ: giả sử bạn có một BlogBundle yêu cầu css cụ thể. Bạn sẽ lưu trữ css trong gói đó, vì vậy lần sau bạn sử dụng BlogBundle cho một dự án bạn có thể dễ dàng sử dụng lại css.

Giống như nhiều thứ khác với Symfony2, sở thích cá nhân của bạn đóng vai trò quan trọng trong các quyết định này. Tôi khuyên bạn nên duy trì sự nhất quán với nơi bạn lưu trữ nội dung của mình. Việc phải quản lý tài sản được chia thành ba vị trí khác nhau (web, AssetsBundle, các gói khác) có thể là một nhức đầu lớn. Vì vậy, chọn một vị trí và cố gắng nhất quán.

Để truy cập nội dung từ ứng dụng/Tài nguyên ... bạn có thể sử dụng Assetic cho việc này. Tôi không quen với nó, nhưng tôi tin rằng bạn có thể tải tài sản từ bất cứ đâu trong dự án của bạn. Tôi thực sự khuyên bạn nên xem xét mã Assetic cốt lõi (xem trong vendor\Assetic) thay vì trình trợ giúp của Symfony2 Assetic vì bạn sẽ có ý tưởng tốt hơn về những gì có thể.

+0

Tôi nghĩ rằng tôi sẽ làm cho AssetsBundle để lưu trữ các tài nguyên này, nó vẫn có thể duy trì hơn tất cả chúng trong thư mục web (đặc biệt, nếu tôi muốn tái sử dụng các tài sản này trong một dự án khác). Cảm ơn câu trả lời! – banrobert

2

Chúng tôi sử dụng một liên kết tượng trưng trong Linux để/web/bó/projectcore/images điểm để src/Bundle/Resources/public/images

Với Subversion trong Netbeans, nó làm việc. Điều tốt đẹp là tất cả các ứng dụng của bạn vẫn còn trong thư mục/src/Bundle

+3

Để hoàn thành, điều này có thể đạt được bằng cách chạy 'php app/console assets: cài đặt web --symlink' trong thư mục dự án Symfony2 của bạn. – richsage

+0

Tôi đang ở trên Windows, vì vậy symlink không phải là một lựa chọn cho tôi :) Dù sao, cảm ơn! – banrobert

+1

@banrobert symlink hoạt động trên các cửa sổ quá – Inoryy

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