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?