2012-06-21 19 views
5

Estoy intentando usar Assetic en un proyecto de Symfony 2. Tengo siguientes ajustes en mi config.yml:Colección de activos Assetic concatenado en modo de depuración

# 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] 

(En caso de que se esté preguntando, estos ajustes no están siendo anulados en el archivo config_dev.yml.)

Estas colecciones son recogidos por Assetic y las rutas se crean para ellos. Hay rutas individuales para cada archivo con un número y el nombre de archivo sin la extensión del archivo. Por ejemplo, para el archivo "base.css", la ruta para descargar el archivo (con filtros aplicados) es "/ assetic/all_css_part_1_base_1".

entonces incluyen las colecciones de activos en mi plantilla de la ramita de la siguiente manera:

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

(. Y de manera similar para la colección "all_js", pero voy a utilizar el lado css para demostrar mi problema)

Cuando Twig renderiza mi plantilla, no utiliza las rutas creadas para los archivos individuales, sino que muestra la "asset_url" para la colección "all_css" como "/css/9118a5a_part_1.css".

Estoy usando el controlador de desarrollo dev y he probado que Assetic cree que está en modo de depuración. (Los filtros de solo producción no se aplican). Sin embargo, los archivos aún se están concatenados, a pesar de la documentación que sugiere lo contrario.

Es muy difícil rastrear problemas en estos archivos ya que los números de línea no coinciden, especialmente para los errores de JavaScript. ¿Hay algo más que deba hacer para que Twig muestre los archivos por separado?

Respuesta

0

Puede enumerar los activos por separado en su plantilla y generará archivos separados, as documented here. En producción, se combinará en 1 archivo.

+0

Tenía la esperanza de usar esta plantilla como parte de un paquete que se puede importar a varios proyectos e incluir los recursos correctos basados ​​en las configuraciones de los proyectos. Si pongo los activos directamente en la plantilla, entonces no será reutilizable de esa manera. (Creo que podría incluir la inclusión de activos en bloques y anularlos con una plantilla específica de proyecto, si no hay otra forma). – restouffer

1

Debe especificar el parámetro ouput en los bloques de rama de la siguiente manera.

{% 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 %} 

Lo mejor sería que depender de output parámetro especificado en config.yml pero desafortunadamente no funciona. Funciona para generar el archivo correcto al descargar los activos pero no para insertar el activo automáticamente en ramitas. Tienes que especificarlo como en el ejemplo anterior.

El argumento de depuración aquí es opcional, tiene como objetivo forzar el modo de depuración para una colección específica y generar diferentes archivos. También puede establecer este parámetro en config.yml.

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