2012-03-31 8 views
7

Estoy intentando que Symfony2 funcione con jQuery UI. He conseguido que la parte de JavaScript funcione bien, pero tengo problemas para que las imágenes funcionen.Las rutas de imagen del filtro Symfony2 cssrewrite están lejos

Una cosa que he leído en los documentos de Assetic es que el filtro cssrewrite puede tomar las rutas de las imágenes en archivos CSS y actualizarlas para que las rutas indiquen los lugares correctos. Esto parecía exactamente lo que necesitaba, así que habilité cssrewrite. Así es como cssrewrite cambió mis caminos:

// original 
images/ui-icons_222222_256x240.png 

// using cssrewrite 
../../../app/Resources/public/css/themes/base/images/ui-icons_222222_256x240.png 

El primer camino no es bueno. La ruta cssrewrite al menos apunta a la ruta correcta en el sistema de archivos, pero en relación con mi webroot, la ruta cssrewrite está desactivada. Obviamente, mi directorio app no es público.

¿Cómo obtengo el filtro cssrewrite para cambiar mi ruta de acceso a algo que realmente funcione?

Aquí está mi inclusión de la hoja de estilo. (Y sí, ya sé que la forma en que estoy incluyendo de forma individual todos estos archivos CSS es mudo, pero no estoy preocupado por eso en este momento.)

{% stylesheets 
     '../app/Resources/public/css/*' 
     '../app/Resources/public/css/themes/base/jquery.ui.accordion.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.all.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.autocomplete.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.base.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.button.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.core.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.datepicker.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.dialog.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.progressbar.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.resizable.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.selectable.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.slider.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.tabs.css' 
     '../app/Resources/public/css/themes/base/jquery.ui.theme.css' 
    %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 
+0

Ver la respuesta a mi pregunta, tiene un ejemplo de trabajo: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 – apfelbox

Respuesta

11

Hay algunos known problems con el filtro CssRewrite. Por lo que sé, no funciona correctamente al usar la notación @BundleName y parece que una solución está vinculando los archivos CSS usando la ruta bundles/bundle_name.

lo tanto el código debe ser algo como esto:

{% stylesheets filter='cssrewrite' 
     'bundles/<your_bundle_name>/css/*' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.accordion.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.all.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.autocomplete.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.base.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.button.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.resizable.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.selectable.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.slider.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.tabs.css' 
     'bundles/<your_bundle_name>/css/themes/base/jquery.ui.theme.css' 
    %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 

Dónde <your_bundle_name> es, obviamente, el nombre del paquete que se está trabajando.

EDIT: recordar dar la orden php app/console assets:install --symlink web, con el fin de enlazar simbólicamente sus activos en el directorio web.

Cuestiones relacionadas