2011-09-28 12 views
8

Zacząłem budować stronę internetową z Symfony2 i miałem trochę problemów związanych z zasobami.Gdzie umieścić podstawowe zasoby w Symfony2?

Książka Symfony2 mówi, że każdy plik zasobów musi znajdować się w pakiecie, ale co z najważniejszymi obrazami, plikami .js i .css, których używam w pliku base.html.twig na każdej stronie?

Czy powinienem utworzyć CoreBundle lub coś podobnego, tylko dla tych plików, czy powinienem umieścić je w folderze app \ Resources (lub bezpośrednio w folderze sieciowym, być może)? Jeśli mogę użyć folderu app \ Resources dla nich, w jaki sposób mogę odwołać się do tych plików z szablonu?

Tworzenie pakietu tylko w tym celu wydaje się trochę niepotrzebne, a adresy URL zasobów dla tych plików są również brzydkie (np. "/bundles/projectcore/images/logo.jpg"), moim zdaniem.

Jaka jest tutaj najlepsza praktyka?

Odpowiedz

6

Mam sytuacje, w których trzymałem wszystkie pliki w sieci/(np./Web/js) i inne, w których trzymałem je w pakiecie "Zasoby".

Jeśli tworzysz pakiet, który ma zostać ponownie wykorzystany w wielu projektach, warto przechowywać zasoby w tym pakiecie. Myślę, że następnie opublikujesz/zainstalujesz te zasoby w folderze sieciowym za pomocą wiersza poleceń. Załóżmy na przykład, że masz moduł BlogBundle, który wymagał określonego css. Możesz przechowywać css w tym pakiecie, więc następnym razem, gdy użyjesz BlogBundle do projektu, możesz łatwo ponownie użyć css.

Podobnie jak w przypadku wielu innych rzeczy w Symfony2, osobiste preferencje odgrywają dużą rolę w tych decyzjach. Zalecam pozostawanie w zgodzie z miejscem przechowywania Twoich aktywów. Posiadanie zarządzania zasobami podzielonymi na trzy różne lokalizacje (sieć Web, AssetsBundle, inne pakiety) może być dużym problemem. Wybierz lokalizację i staraj się zachować spójność.

Jeśli chodzi o dostęp do zasobów z aplikacji/zasobów ... możesz mieć do tego dostęp. Nie jestem do końca zaznajomiony z tym tematem, ale uważam, że możesz ładować zasoby z dowolnego miejsca w projekcie. Właściwie poleciłbym rzucić okiem na podstawowy kod Assetic (spójrz w vendor\Assetic) zamiast na pomocnika Symfony2 Assetic, ponieważ uzyskasz lepszy obraz tego, co jest możliwe.

+0

Myślę, że sprawię, że AssetsBundle do przechowywania tych zasobów, to jest nadal możliwe do utrzymania, niż umieszczenie ich wszystkich w folderze sieciowym (szczególnie, jeśli chcę ponownie wykorzystać te aktywa w innym projekcie). Dziękuję za odpowiedź! – banrobert

2

Użyliśmy dowiązania w Linuksie tak, że/web/pakiet/projectcore/images punkty src/Paczka/Resources/public/obrazów

z Subversion w NetBeans, to działa. Fajną rzeczą jest to, że cała twoja aplikacja pozostaje w folderze/src/Bundle

+3

Dla kompletności można to osiągnąć, uruchamiając 'php app/console assets: install web --symlink' w katalogu projektu Symfony2. – richsage

+0

Jestem w systemie Windows, więc dowiązanie symboliczne nie jest dla mnie opcją :) W każdym razie, dzięki! – banrobert

+1

@banrobert dowiązanie działa również na windows – Inoryy

Powiązane problemy