entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

¿Como cargar un asset, por ejemplo una hoja de estilo, correctamente en Symfony2?

Mi problema es el siguiente, estoy desarrollando una aplicación web en windows con el framework symfony2, donde para cargar el asset css de un bundle ejecuto

php app/console assets:install web

y en la plantilla general de la aplicación coloco el bloque correspondiente enlazando el css

{% block stylesheets %}
<link type="text/css" rel="stylesheet" href="{{ asset('/bundles/cursosymfonyunidad3alimentos/css/estilo.css') }}"/>
{% endblock %}

lo carga correctamente, pero cuando ejecutas la aplicación, no carga la hoja de estilos y salta un error 404 not found del archivo css.

¿Que puede estar sucediendo?

Gracias de antemano.

0voto

Bmonkey comentado

se mo olvido indicar que la ruta

link type="text/css" rel="stylesheet" href="{{ asset('/bundles/cursosymfonyunidad3alimentos/css/estilo.css') }}"/

la función de asset genera la ruta correcta

4 Respuestas

2votos

JoanPerez Puntos770

Te recomiendo que mires dónde está el CSS y la url a la que enlazas el CSS porque no deben coincidir la una con la otra. Otra opción no veo.

3votos

lo carga correctamente, pero cuando ejecutas la aplicación ...

Lo carga correctamente? entonces cual es el problema? en que entorno?

pero cuando ejecutas la aplicación, no carga la hoja de estilos y salta un error 404 not found del archivo ...

si la carga o no la carga? estas usando un entorno diferente (dev, prod), esta el archivo actualmente en el directorio?

podrias pegar la salida que entrega el comando

php app/console assets:install web

para poder ver mas informacion acerca de tus archivos

0voto

Bmonkey comentado

lo estoy ejecutando en entorno dev, cada vez que instalo los assets con el comando el mensaje que me salta es de que se ha instalado, y se genera el arbol de directorios en web.
En mi caso

Web
bundles
bmonkeyaulamentoralimentos
css
estilo.css

la funcion asset se supone que tiene que generar la ruta correcta

y me salta el siguiente error en symfony y el navegador no lo encuentra.

No route found for "GET /bundles/bmonkeyaulamentoralimentos/css/estilo.css"

espero haberme explicado con mayor claridad.

0voto

juan_carlos_clemente comentado

el archivo está fisicamente en ese directorio?
por cierto el chiste era copiar y pegar la salida del comando

3votos

juanitourquiza Puntos490

Para que funcione utiliza esta linea:

<link href="{{ asset('css/estilos.css') }}" rel="stylesheet" type="text/css" />

Y el archivo .css debes colocarlo dentro de:

web/css 

y seguro funciona.

Saludos

2votos

juanber84 Puntos320

php app/console assetic:dump y te funcionara en prod. Saludos

0voto

Bmonkey comentado

que hace exactamente el comando assetic:dump?

0voto

juanber84 comentado

Hola.
Tu problema es que con assets:install web estas subiendo los css a pre, por eso en /app_dev.php lo ves bien, assetic:dump vuelca el contenido de pre a prod, te lo junta renombr.a, etc, y lo mas importante te actualiza los cambios que tengas en pre a prod.
Mírate mi bundle quizás te resulte útil para esas tareas:

https://github.com/juanber84/ProfilercommandBundle
https://packagist.org/packages/juanber84/profilercommand-bundle

Está en version alpha pero es usable.
Saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta