【问题标题】:Symfony2 cssrewrite filter's image paths are way offSymfony2 cssrewrite 过滤器的图像路径很遥远
【发布时间】:2012-04-15 04:30:28
【问题描述】:

我正在尝试让 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 %}

【问题讨论】:

标签: jquery-ui symfony assetic


【解决方案1】:

有一些 known problems 带有 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 %}

&lt;your_bundle_name&gt; 显然是您正在处理的包的名称。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 2013-11-12
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多