Cómo incluir CSS de la carpeta de recursos en Symfony 2
-
27-10-2019 - |
Pregunta
Tengo el CSS ubicado en
app/Resources/FOSUserbundle/css
¿Cómo puedo incluir eso en mi plantilla de ramita?
La razón por la que estoy poniendo CSS allí es que mis plantillas de fosuser anuladas en esa carpeta. Así que quiero mantener las imágenes CSS, JS, todo allí para que si necesito usar en otro sitio web solo copio esa carpeta
Solución
No estoy muy seguro de cómo incluirías eso en tus plantillas de ramas, pero ...
1) Pongo los recursos que uso en varios paquetes / proyectos en la web / directorio. Entonces puedes hacer referencia a este tipo:
{% stylesheets 'css/styles.css' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
2) Si necesita anular el FosuserBundle de todos modos, puede colocar los recursos dentro del paquete heredador, haciendo referencia a ellos así:
{% javascripts '@YourBundle/Resources/public/js/scripts.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Otros consejos
Lo que has hecho es perfectamente bien.
Solo haz lo siguiente:-
$ app/console assets:install web
Instalará los activos en el directorio público "web", donde los activos deberían ser técnicamente, para ser utilizados con sus plantillas de ramita.
Los activos se pueden usar dentro de plantillas de ramas como esta:-
{% block stylesheets %}
<link href="{{ asset('/css/main.css') }}" type="text/css" rel="stylesheet" />
{% endblock %}
{% block javascripts %}
<script src="{{ asset('/js/main.js') }}" type="text/javascript"></script>
{% endblock %}
Aunque la pregunta sugiere y anula el caso, también es para un caso en el que los CSS o JS están en una carpeta común, lejos de la estructura del paquete.
Una respuesta es usar las variables de ramita disponibles. Por ejemplo, si tengo un archivo CSS ubicado aquí
app/Resources/views/clientSite/customFolder/css/mycss.css
Puedo cargar en cualquier plantilla usando algo como esto (tenga en cuenta que el ejemplo anula el bloque completo de hojas de estilo, pero no es necesario, la etiqueta de ramita de hoja de estilo se puede agregar en cualquier bloque):
{% block stylesheets %}
{{ parent() }}
{% stylesheets '%kernel.root_dir%/Resources/views/clientSite/customFolder/css/mycss.css'
%}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
Recuerda también Ejecutar el comando Assetic: Dump, Entonces, Symfony sabe que tuvo que publicar el CSS en la carpeta Web/CSS con todos los demás archivos.