Symfony2 cs-s-rewrite 过滤器的图像路径很遥远
Posted
技术标签:
【中文标题】Symfony2 cs-s-rewrite 过滤器的图像路径很遥远【英文标题】:Symfony2 cs-s-rewrite filter's image paths are way off 【发布时间】:2012-04-15 04:30:28 【问题描述】:我正在尝试让 Symfony2 与 jQuery UI 一起工作。我已经让它的 javascript 部分工作得很好,但我无法让图像工作。
我在 Assetic 文档中读到的一件事是 cs-s-rewrite
过滤器可以获取 CSS 文件中的图像路径并更新它们,以便路径指向正确的位置。这看起来正是我所需要的,所以我启用了cs-s-rewrite
。以下是cs-s-rewrite
如何改变我的路径:
// original
images/ui-icons_222222_256x240.png
// using cs-s-rewrite
../../../app/Resources/public/css/themes/base/images/ui-icons_222222_256x240.png
第一个路径不好。 cs-s-rewrite
路径至少指向文件系统中的正确路径,但相对于我的 webroot,cs-s-rewrite
路径已关闭。显然我的app
目录不是公开的。
如何让cs-s-rewrite
过滤器将路径更改为实际可行的路径?
这是我的样式表包含。 (是的,我知道我单独包含所有这些 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 %
【问题讨论】:
查看我的问题的答案,它有一个工作示例:***.com/questions/9500573/… 【参考方案1】:有一些 known problems 带有 CssRewrite 过滤器。据我所知,使用 @BundleName
表示法无法正常工作,解决方法似乎是使用 bundles/bundle_name
路径链接 CSS 文件。
因此你的代码应该是这样的:
% stylesheets filter='cs-s-rewrite'
'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
目录。
【讨论】:
以上是关于Symfony2 cs-s-rewrite 过滤器的图像路径很遥远的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 中的 Twig CamelCase 过滤器