Obecnie tworzę aplikację internetową przy użyciu Symfony 2.1.0.Symfony2: Jak prawidłowo uwzględnić zasoby w połączeniu z dziedziczeniem szablonów Twig?
Przeczytałem w książce Templating chapter i próbuję uwzględnić zasoby (obecnie, to tylko jeden arkusz stylów) na moich stronach internetowych.
Używam Three-level inheritance system opisany w książce, a moja struktura aplikacji aktualnie wygląda tak:
- app/Resources/widoki/
- base.html.twig : szablon podstawowy, zawierający title, arkusze stylów i bryły bloki.
- src/moje/PageBundle/Resources/widoki
- layout.html.twig: szablon układ (rozszerzenie szablonu bazowego), dołączając głównego arkusza stylów do stylesheet bloku i zastąpieniem ciała bloku, włączając navigation.html.twig i definiując zawartość blok
- layout-admin.html.twig: samo jak powyżej, ale w tym nawigacyjnym-admin.html.twig
- src/moje/PageBundle/Resources/widoki/Main
- standardowe szablony, rozszerzając szablon układ i zastąpieniem jej treść blok
- src/My/PageBundle/Resources/views/Administracja
- szablony administracyjne. To samo, co powyżej, ale rozszerzenie szablonu układu administracyjnego.
- src/My/PageBundle/Resources/public/css
- main.css: główny stylów
Jak widać, mam umieść arkusz stylów w moim pakiecie. Nie wiem, czy to dobra praktyka, czy nie.
Teraz chodzi o układ.html dodałem to:
{% block stylesheets %}
{{ parent() }}
<link rel="stylesheet" type="text/css" href="{{ asset('css/main.css)' }}" />
{% endblock %}
Ale asset('css/main.css')
jest tylko z linkami do /css/main.css
, natomiast ./app/console assets:install
instaluje aktywa web/bundles/mypagebundle/
. Nie podoba mi się, że w ten sposób nazwa mojego pakietu będzie publicznie widoczna (co może sprawić, że użytkownicy będą podejrzewać, że używam Symfony, a ja lubię przechowywać wewnętrzne strony mojej strony, no, wewnętrznie). Czy istnieje możliwość zmiany katalogu, w którym assets:install
instalowałaby zasoby? Wydaje mi się żmudne ręczne instalowanie zasobów w internecie /.
Zastanawiam się również nad wykorzystaniem Assetic do zarządzania aktywami, ponieważ osobiście podoba mi się możliwość automatycznej minimalizacji moich skryptów/arkuszy stylów i przechowywania ich wszystkich razem w jednym pliku. Jednak słyszę, że nie jest to możliwe, jeśli umieścisz arkusze stylów na różnych poziomach, tzn. Nie będzie działać z trzystopniowym systemem dziedziczenia. Czy można to obejść? Czy użycie Assetic pozwoli mi ukryć nazwę mojego pakietu przed opinią publiczną?
Więc to nie jest w żaden sposób możliwe, aby Assetic kleju wszystko arkusze stylów na wszystkich poziomach razem? Ponieważ w przypadku drugiej metody musiałbym zmienić WSZYSTKIE pod-szablony, jeśli zdecyduję się dodać kolejny arkusz stylów na najwyższym poziomie, prawda? –
Dobrze. Można również zdefiniować "główny" zasób w pliku config.yml (patrz dokumentacja) i odwoływać się do tego zasobu, zamiast bezpośrednio odwoływać się do pliku main.css. W ten sposób możesz zmienić główny zasób bez konieczności zmiany wszystkich szablonów. – arnaud576875
Dziękuję. Na marginesie, czy reszta mojej struktury aplikacji wygląda dla ciebie jak dobra praktyka czy jest coś, czego mi brakuje? –