fkr / cssurlrewrite-bundle
此包已被弃用且不再维护。未建议替代包。
一个用于修复 Symfony 中 CSS 文档中所有 URL 路径的小型 assetic 过滤器
v1.0.4
2016-08-21 19:17 UTC
Requires
- php: >=5.3.2
- symfony/assetic-bundle: *
README
一个用于修复 Symfony2 中 CSS 文档中所有 URL 路径的小型 assetic 过滤器。它还提供跨平台资源链接的便捷方式。
安装
引入供应商库
这可以通过三种不同的方式完成
方法 #1) 使用 composer
"require": { "fkr/cssurlrewrite-bundle": "*" }
方法 #2) 使用 git 子模块
git submodule add git://github.com/fkrauthan/FkrCssURLRewriteBundle.git vendor/bundles/Fkr/CssURLRewriteBundle
方法 #3) 使用 deps 文件
[FkrCssURLRewriteBundle]
git=git://github.com/fkrauthan/FkrCssURLRewriteBundle.git
target=bundles/Fkr/CssURLRewriteBundle
注册 Fkr 命名空间
如果不使用 composer,请使用 Symfony 的自动加载器注册 Fkr
命名空间
// app/autoload.php $loader->registerNamespaces(array( 'Fkr' => __DIR__.'/../vendor/bundles', // your other namespaces ));
将 CssURLRewriteBundle 添加到您的应用程序内核中
// app/AppKernel.php public function registerBundles() { return array( // ... new Fkr\CssURLRewriteBundle\FkrCssURLRewriteBundle(), // ... ); }
配置
# app/config.yml fkr_css_url_rewrite: rewrite_only_if_file_exists: true clear_urls: true
- rewrite_only_if_file_exists: 如果为 true(默认)则仅在资源存在于 .../BundleFolder/Resources/public/ 文件夹中时重写 URL。
- clear_urls: 如果为 true(默认)则对生成的 URL 进行规范化。例如,如果 URL 通常为
.../less/../img
,则此选项将.../img
。
使用方法
标准使用方法
例如,如果您将 CSS 文件放在
.../BundleFolder/Resources/public/css
并且您的图像在
../BundleFolder/Resources/public/img
然后您的 CSS 文件中可能包含如下内容
background-image: url(../img/MyImageName.png)
现在您必须调用
app/console assets:install
现在如果您的模板中包含如下内容
{% stylesheets filter='css_url_rewrite,?yui_css'
'@BundleName/Resources/public/css/mycssfile.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" type="text/css" />
{% endstylesheets %}
现在过滤器将重写您的 CSS 文件中的 URL
background-image: url(../img/MyImageName.png) => background-image: url(../bundles/bundlename/css/../img/MyImageName.png)
一切正常工作。
扩展使用方法
您可以通过使用 @ 注解从其他包链接图像。例如,如果您的 CSS 文件中这样写
background-image: url(@BundleNameBundle/img/MyImageName.png)
现在过滤器将在您的 CSS 文件中重写此 URL
background-image: url(@BundleNameBundle/img/MyImageName.png) => background-image: url(../bundles/bundlename/img/MyImageName.png)