2012-06-21 12 views
5

Próbuję użyć Assetic w projekcie Symfony 2. Mam następujące ustawienia w moim config.yml:Assetic Asset Collection Concatenated w trybie debugowania

# app/config/config.yml 
assetic: 
    debug:   %kernel.debug% 
    use_controller: true 
    filters: 
     cssrewrite: ~ 
     yui_css: 
      jar: /home/testing/bin/yuicompressor-2.4.7.jar 
     less: 
      node: /usr/bin/node 
      node_paths: [/usr/local/bin/] 
      apply_to: "\.less$" 
    assets: 
     all_js: 
      inputs: 
       - @FoundationViewBundle/Resources/public/js/* 
      filters: [?yui_js] 
     all_css: 
      inputs: 
       - @FoundationViewBundle/Resources/public/css/* 
      filters: [less, ?yui_css] 

(W przypadku, gdy zastanawiasz się, te ustawienia nie są zastępowane w pliku config_dev.yml.)

zbiory te są zbierane przez Assetic i trasy są dla nich tworzone. Istnieją osobne trasy dla każdego pliku z numerem i nazwą pliku bez rozszerzenia pliku. Na przykład dla pliku "base.css" trasa do pobrania pliku (z zastosowanymi filtrami) to "/ assetic/all_css_part_1_base_1".

Potem obejmują zbiory atutem w moim szablonu Twig następująco:

{% stylesheets '@all_css' %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}"> 
{% endstylesheets %} 

(. I podobnie do „all_js” kolekcji, ale użyję bok css do wykazania mój problem)

Gdy Twig wyświetla mój szablon, nie używa tras utworzonych dla poszczególnych plików, ale wyświetla "asset_url" dla kolekcji "all_css" jako "/css/9118a5a_part_1.css".

Używam kontrolera frontowego dev i przetestowałem, że Assetic wierzy, że jest w trybie debugowania. (Filtry tylko do produkcji nie są stosowane.) Jednak pliki są nadal łączone, mimo że dokumentacja sugeruje inaczej.

Bardzo trudno jest wykryć problemy w tych plikach, ponieważ numery linii nie pasują, szczególnie w przypadku błędów JavaScript. Czy jest coś jeszcze, co muszę zrobić, aby Twig wyświetlał pliki osobno?

Odpowiedz

0

Możesz po prostu wymienić osobne zasoby w swoim szablonie i wygeneruje oddzielne pliki, as documented here. Podczas produkcji zostanie on połączony w 1 pliku.

+0

Miałem nadzieję, że wykorzystam ten szablon jako część pakietu, który można zaimportować do kilku projektów i dołączyć odpowiednie zasoby w oparciu o konfiguracje projektów. Jeśli umieściłbym zasoby bezpośrednio w szablonie, nie będzie można tego użyć ponownie. (Sądzę, że mógłbym umieścić włączenie aktywów w blokach i zastąpić je szablonem specyficznym dla projektu, jeśli nie ma innego sposobu). – restouffer

1

Musisz podać parametr ouput w swoich blokach gałązkowych, jak poniżej.

{% javascripts '@all_js' output="assetic/js/all.min.js" debug=false %} 
    <script type="text/javascript" charset="utf-8" src="{{ asset_url }}"> 
{% endjavascripts %} 

{% stylesheets '@all_css' output="assetic/css/all.min.css" debug=false %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}"> 
{% endstylesheets %} 

Najlepiej byłoby polegać na output parametru określonego w config.yml ale niestety to nie działa. Działa w celu wyprowadzenia prawidłowego pliku podczas zrzucania zasobów, ale nie do automatycznego wstawiania zasobu. Musisz określić to tak, jak w poprzednim przykładzie.

Argument debugowania tutaj jest opcjonalny, ma na celu wymuszanie trybu debugowania dla określonej kolekcji i wyprowadzanie różnych plików. Możesz również ustawić ten parametr w config.yml.

assets: 
    all_js: 
     inputs: 
      - @FoundationViewBundle/Resources/public/js/* 
     filters: [?yui_js] 
     output: "assetic/css/all.min.js" 
     debug: true 
Powiązane problemy