Symfony obtiene el nombre del activo en la salida de Assetic

3 minutos de lectura

avatar de usuario
patricio benard

Genero mi archivo con un código como este:

{% block head_stylesheets %}
    {% stylesheets
        filter="?uglifycss"
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}

Vuelca un archivo llamado así: c543k540_myfile_1.css

Este archivo se compone del nombre del recurso seguido del nombre del archivo: {assetName}_{filename}.css

¿Cómo puedo personalizar la salida manteniendo el nombre del activo en la salida?

{% block head_stylesheets %}
    {% stylesheets
        output="css/mynewfilename.{assetName}.css"     // <--- Here
        filter="?uglifycss"
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}


Actualizar para aclarar

Sé que si uso la opción de nombre, en prod se compilará para myouputname.css pero lo que me gustaría tener en el entorno de depuración/desarrollo es seguir el siguiente código, algo así como myfile_myouputname_1.css

{% block head_stylesheets %}
    {% stylesheets
        name="myouputname"     // <--- Here
        filter="?uglifycss"
        '@MyBundle/Resources/public/less/myfile.less'
    %}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen"/>
    {% endstylesheets %}
{% endblock head_stylesheets %}

Gracias por su respuesta.

  • Asumiendo que has mirado aquí: symfony.com/doc/current/assetic/… ¿Cuál es la salida generada usando el segundo código a continuación?

    – MichaelMMeskhi

    17 de junio de 2017 a las 9:22

  • El resultado generado es “mynewfilename. {assetName}.css”

    – BENARD Patrick

    17 de junio de 2017 a las 10:27

  • ¿Cuál es exactamente el nombre de archivo que desea obtener en la salida? Sólo c543k540.css ? En dev Environement, el comando vuelca los fragmentos de cada activo y también el archivo combinado. Deberías encontrar dos archivos. c543k540_miarchivo_1.css y c543k540.css. Si se deshace de los activos para prod ambiente con bin/console assetic:dump --env=prod --no-debug debe crear solo el archivo principal *c543k540.css`. Recuerde borrar el caché antes de volcar en prod.

    – señorrodos

    17 de junio de 2017 a las 11:57


  • Entonces, para aclarar, si su activo contiene name="foo"y output="mynewfilename.{assetName}.css"espera un archivo llamado mynewfilename.foo.css?

    – Alain Tiemblo

    20 de junio de 2017 a las 19:19

  • Te aconsejo que uses webpack. Será mucho más fácil hacer este tipo de cosas. symfony.com/doc/3.4/frontend.html

    – Le Menach Florian

    11 de agosto de 2018 a las 9:21

Ya no se recomienda usar Assetic para administrar activos web en aplicaciones Symfony. En su lugar, utilice Webpack Encore.
https://symfony.com/doc/current/frontend/assetic/index.html#dumping-archivos-de-activos

Aquí se describe JavaScript o CSS (entradas múltiples) específico de la página:
https://symfony.com/doc/current/frontend/encore/simple-example.html#multiple-javascript-entries

// webpack.config.js
Encore
    // ... general CSS file here...
    .addStyleEntry('some_page', './assets/css/assetName.css')
;

Se admite el uso de addStyleEntry(), pero no se recomienda. Una mejor opción es seguir el patrón anterior: use addEntry() para apuntar a un archivo JavaScript, luego solicite el CSS necesario desde dentro de eso.

¿Ha sido útil esta solución?