1

このURIに行くと

/app_dev.php/css/eabd201_jquery.ui.theme_15.css

それは私にそのCSSファイルを与えます、それは私が期待するものです、しかし私がこのURIに行くならば、

/app_dev.php/css/images/ui-icons_222222_256x240.png

このエラーが発生します:

「GET/css/images/ui-icons_222222_256x240.png」のルートが見つかりません

/css/*パスのルーティングを行わないようにSymfonyに指示する方法が必要なようです。(ファイルが存在することはわかっています。)どうすればよいですか?

編集:これが私の.htaccessファイルです:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
4

1 に答える 1

1

それがあなたの場合かどうかはわかりませんが、ディレクトリ構造を想像してみてください。

├── css
│   ├── style.css
├── images
│   ├── foo.png

ではstyle.css、のような相対パスを使用して画像を参照するとすぐに、別のディレクトリurl(../images/foo.png)に移動すると機能しなくなります。style.css

Asseticを使用してCSSファイルをレンダリングしているため、asseticはこのCSSファイルを/app_dev.php/css実際には存在せず、app_dev.phpコントローラーによって処理されるディレクトリに「移動」します。したがって、現在、イメージへの相対パスはイメージを指して/app_dev.php/images/foo.pngいませんが、実際には存在せず、app_dev.phpコントローラーによって処理されます。

うまくいけば、それは本当に一般的な問題であり、組み込みの解決策があります:cssrewriteフィルター。

タグに追加することができ{% stylesheet %}ます:

# app/config/config.yml
assetic:
    # ...
    filters:
        cssrewrite: ~

{# your template #}

{% stylesheet 'bundles/foo/css/style.css' filter='cssrewrite' %}

または、すべてのCSSファイルに適用します。

# app/config/config.yml
assetic:
    # ...
    filters:
        cssrwrite:
            apply_to: \.css$

それはあなたのためにこの種のパスを書き直すことの世話をします。

于 2012-05-01T13:10:42.437 に答える