2012-02-29 11 views
6

Estoy tratando de comprender el paquete de activos de symfony2. Estoy tratando de usar un plugin jquery que utiliza su propio archivo css. He puesto todo en mybundle/Resources/public y luego se divide en imágenes/javascript/css y/Sirviendo imágenes relativas usando assetic

El css plugins está utilizando rutas relativas para obtener las imágenes como ../images/sprite.png

Usando Assetic para servir el archivo css:

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

La ruta generada por assetic es /app_dev.php/css/mycss.css, lo cual es correcto, supongo. Obviamente, los parches de imagen relativos ya no funcionan. Debido a que los archivos están ubicados en mi carpeta/Resources/public y no en/images/

Al intentar usar el filtro csrewrite, los pathes se vuelven a escribir a: http://server.com/Resources/public/images/sprite.png. Pero esto no corrijo, los archivos no se encuentran allí.

¿Cómo puedo servir las imágenes relativas usando assetic?

+0

Hice una pregunta similar: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 (puede ver mis intentos para resolverlo allí también) – apfelbox

Respuesta

4

Puede deletrear la ruta de salida y no usar cssrewrite en absoluto.

{% stylesheets output="bundles/zaysoarbiter/css/forms2.css" 
    '@ZaysoArbiterBundle/Resources/public/css/forms2.css' 
%} 

Y entonces por supuesto que utilice assets:install copiar sus imágenes a web/bundles/bundle/images o donde sea. En lo que respecta al navegador, sus css e imágenes ahora se encuentran en relación uno con el otro. En producción usará assetic:dump para mover el archivo CSS real generado.

+2

Al usar esta solución, la ruta en el entorno de desarrollo para imágenes es: app_dev.php/bundles/mybundle/images/sprite.png, que da como resultado una excepción NotFoundHttpException. ¿También tienes una solución para servirles dev env? – dvcrn

+0

Como las imágenes tienden a no cambiar, solo uso asset: install para instalarlas en mi máquina dev. Entonces, mientras que el CSS se genera dinámicamente, las imágenes simplemente se sientan allí. Puede utilizar la opción --symlink para evitar tener que hacer copias reales. – Cerad

+0

Supongo que describí mal mi problema un poco. Cuando tengo "app.php" o "app_dev.php" en mi url (por ejemplo: app.php/bundles/mybundle/images/sprite.png), el resultado es un 404. Al salir de la app.php/app_dev .php (por ejemplo: bundles/mybundle/images/sprite.png), la ruta está bien y la imagen está siendo servida. Assetic sirve los archivos CSS a través de su entorno actual. Si está utilizando app_dev.php, también se encuentra en todas las URL de estilo generadas por los elementos. Significa que todos los parches de imagen relativos (dentro de los archivos .css) también usan app_dev.php, lo que da como resultado la url que mencioné anteriormente. – dvcrn