devlabs91/cssurlrewrite-bundle

一个用于 symfony 的小型 assetic 过滤器,用于将所有 css 文档中的 URL 路径修正为正确 URL。

安装次数: 2,738

依赖关系: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 15

类型:symfony-bundle

v1.0.8 2020-02-14 04:50 UTC

This package is auto-updated.

Last update: 2024-09-14 14:52:12 UTC


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)

许可

Resources/meta/LICENSE