Symfony2 cssrewrite过滤器的图像路径很远

Jas*_*ett 7 jquery-ui symfony assetic

我正在尝试让Symfony2与jQuery UI一起工作.我已经让它的JavaScript部分运行得很好,但我无法让图像工作.

我在Assetic文档中读到的一件事是,cssrewrite过滤器可以获取CSS文件中的图像路径并更新它们,使路径指向正确的位置.这看起来就像我需要的,所以我启用了cssrewrite.这是cssrewrite改变我的路径的方式:

// original
images/ui-icons_222222_256x240.png

// using cssrewrite
../../../app/Resources/public/css/themes/base/images/ui-icons_222222_256x240.png
Run Code Online (Sandbox Code Playgroud)

第一条道路并不好.该cssrewrite路径至少指向文件系统中的正确路径,但相对于我的webroot,cssrewrite路径是WAY off.显然我的app目录不公开.

如何让cssrewrite过滤器将路径更改为实际可用的路径?

这是我的样式表包含.(是的,我知道我单独包括所有这些CSS文件的方式是愚蠢的,但现在我不担心这种权利.)

    {% 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 %}
Run Code Online (Sandbox Code Playgroud)

And*_*rea 11

CssRewrite过滤器存在一些已知问题.据我所知,使用@BundleName符号无法正常工作,解决方法似乎是使用bundles/bundle_name路径链接CSS文件.

因此,您的代码应该是这样的:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

哪里<your_bundle_name>是很明显,你正在使用的包的名称.

编辑:记得给出php app/console assets:install --symlink web命令,以便象征性地将您的资产链接到web目录中.