images engines asset symfony assetic

symfony - engines - Enlaces generadores de activos pero no archivos



symfony assets (4)

Intento utilizar assetic en Symfony2 para administrar mi CSS. Los enlaces se generan bien. Sin embargo, no se generan archivos.

Aquí está mi configuración:

Layout.html.twig

{% stylesheets ''@FooBundle/Resources/public/css/main.css'' filter=''cssrewrite'' %} <link rel="stylesheet" href="{{ asset_url }}" /> {% endstylesheets %}

Config.yml

assetic: debug: %kernel.debug% use_controller: false bundles: [ FooBundle ] filters: cssrewrite: ~

Config_dev.yml

assetic: use_controller: true

Assetic genera el enlace foo.foo/app_dev.php/css/957d3aa_main_1.css . Sin embargo, el archivo no está allí (ni en ningún otro lado). He intentado jugar con permisos y buscar en los registros (nginx), pero nada hasta el momento.

Toda la ayuda sería muy apreciada.


Tampoco genera archivos cuando use_controller: true está use_controller: true si está utilizando SASS para compilar SCSS, pero ruby o ruby ​​gem sass no están instalados.


Tuve el mismo problema, solo necesitaba instalar Java

sudo apt-get install default-jre

también puede ver al comienzo de la salida, esto podría ayudar:

app/console assetic:dump > outfile 2>&1


Tuve un error muy similar a este. De repente, el activo dejó de funcionar. Lo único que agregué fue el FOSRestBundle . Tal vez estés usando el paquete de descanso también.

Aquí está mi solución:

fos_rest: routing_loader: default_format: json param_fetcher_listener: true body_listener: true format_listener: rules: # render "/api" requests as json - { path: ^/api, priorities: [ json ], fallback_format: json, prefer_extension: true } # default, fallback rendering twig templates - { path: ^/, priorities: [''html'', ''application/javascript'', ''text/css'', ''*/*''], fallback_format: html, prefer_extension: true }

Cambié las priorities: [''html'', ''*/*''] a las priorities: [''html'', ''application/javascript'', ''text/css'', ''*/*''] y todo funciona bien ahora.


Usted tiene 2 opciones cuando se trata de activos. La razón por la que no ve sus activos físicamente en su computadora es porque eligió la Opción 1.

Opción 1: SYMFONY PUEDE PROCESAR LOS ARCHIVOS DINÁMICAMENTE PARA USTED

Eso significa que Symfony maneja dinámicamente cada ruta de activos generada en el entorno de desarrollo. Por lo tanto, Assetic genera rutas a archivos CSS y JavaScript que no existen físicamente en su computadora. Este es un controlador interno de Symfony que abre los archivos y le devuelve el contenido por usted.

Ventajas: - Los cambios realizados en sus activos tienen efecto inmediato. Esto es excelente en el modo de desarrollo ya que Symfony genera los archivos dinámicamente para usted.

Desventajas: - Esto no es posible en el modo prod ya que renderizar cada activo dinámicamente sería demasiado lento - Los activos no serán accesibles directamente en su computadora (por eso no puede encontrar el archivo) - Puede ser bastante lento si está utilizando muchos filtros, etc.

Para hacer esto en modo dev, simplemente edita la configuración de assetic en config_dev.yml:

assetic: use_controller: true

Opción 2: ARCHIVOS DE ACTIVOS DE DUMPING

Si no desea manejar los activos de forma dinámica, puede volcar sus activos de forma manual, lo que significa que realmente escribe sus activos de manera física en su computadora.

Ventajas: - No es necesario que Symfony genere los archivos dinámicamente para que esto se ejecute mucho más rápido. Por lo tanto, esto es perfecto en el modo prod. Los archivos son físicamente accesibles en el directorio / web (o donde elijas darlos)

Desventajas: - Debe volcar los activos cada vez que cambie algo ... o puede volcar los activos con el comando --watch, que puede ser un poco molesto si trabaja en modo dev.

Para hacer esto:

Establezca use_controller en falso (config_dev.yml):

assetic: debug: %kernel.debug% use_controller: false

Incluso puede elegir dónde leer y generar sus activos si es necesario

assetic: read_from: %kernel.root_dir%/Resources/views/ write_to: %kernel.root_dir%/../web/thefolderyouwant/

La salida ahora comienza desde su configuración write_to en assetic

{% stylesheets ''@FooBundle/Resources/public/css/main.css'' output=''css/main.css'' %} <link rel="stylesheet" href="{{ asset_url }}" /> {% endstylesheets %}

Si continúa, tendrá un error de recurso , así que coméntelo o elimínelo en config_dev.yml:

_assetic: resource: . type: assetic

Finalmente, puede generar los activos automáticamente para que los cambios que realice tengan efecto inmediato:

php app/console assetic:dump --watch

En ese caso, el archivo ahora debería estar disponible:

/web/thefolderyouwant/css/main.css

Vea el Cookbook para más información: ¿Cómo usar Assetic para Asset Management?