7

我试图让 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

第一条路不好走。该cssrewrite路径至少指向文件系统中的正确路径,但相对于我的 webroot,该cssrewrite路径已关闭。显然我的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 %}
4

1 回答 1

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 %}

<your_bundle_name>您正在处理的捆绑包的名称显然在哪里。

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

于 2012-04-01T14:14:11.327 回答