devlabs91 / cssurlrewrite-bundle
一个用于 symfony 的小型 assetic 过滤器,用于将所有 css 文档中的 URL 路径修正为正确 URL。
v1.0.8
2020-02-14 04:50 UTC
Requires
- php: >=5.3.2
- devlabs91/assetic-bundle: *
README
一个用于 Symfony2 的小型 assetic 过滤器,用于将所有 css 文档中的 URL 路径修正为正确 URL。它还提供了跨平台间资源的简单链接。
安装
引入供应商库
这可以通过三种不同的方式完成
方法 #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: 如果为真(默认值)则仅在资源存在于 .../BundleFolder/Resources/public/ 文件夹中时才重写 URL。
- clear_urls: 如果为真(默认值)则对生成的 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)