checkdomain/assets-extra-bundle

该包已被废弃且不再维护。没有建议的替代包。

Symfony2 Bundle 用于扩展内置的资产管理

0.2.5 2013-11-25 13:09 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:23:58 UTC


README

扩展内部 Symfony 2 Assets-Verwaltung 的配置,以在文件路径中加密 Bundle 名称或将 Assets 文件夹从 "bundles" 移至其他位置。包括扩展 Twig asset()-Funktion、Assetic LessPHP-Compilers 和 CssRewrite-Filters,允许使用 Logical File Names 引用以及修复 Assetic CssRewrite-Filter-Bug

安装

按照以下步骤,在您的 Symfony 环境中安装此 Bundle。

第 1 步

将以下行添加到您的 composer.json 文件中

"require" :  {
	// ...
	"checkdomain/assets-extra-bundle": "dev-master",
}

第 2 步

运行 composer update 以重新加载包。

第 3 步

使用以下代码行注册 Bundle

<?php
// app/AppKernel.php

public function registerBundles()
{
	$bundles = array(
    		// ...
    		new Checkdomain\AssetsExtraBundle\CheckdomainAssetsExtraBundle(),
	);
	// ...
}

第 4 步

如果您想使用 LessPHP,请像往常一样在配置中激活扩展。有关说明,请参阅例如 howto24.net

我们建议将 Assetic 的 CssRewrite-Filters 激活到所有文件扩展名,如

  • *.css
  • *.less
  • *.sass
  • 和 *.scss

只需按照以下方式修改您的配置即可

assetic:
	filters:
		cssrewrite:
    		apply_to: '\.(css|less|sass|scss)$'

配置

以下配置可供您使用

checkdomain_assets_extra:
	write_to: web
	encrypt_bundle: false
	assets_path: bundles
  • write_to
    来自 AsseticBundle。您可以在执行 app/console assetic:install 时指定 Assets 默认写入哪个文件夹。

  • encrypt_bundle
    如果启用,将加密 Asset-Pfad 中的 Bundle 名称。例如,从 bundles/acmedemo/test.jpg 变为 bundles/e0b6011f/test.jpg

  • assets_path
    指定 Assets 的目录。在 Symfony 中,默认值是 bundles,但也许有人更喜欢例如 assets

应用

以下将简要说明不同的应用领域。在以下示例中,我们使用了以下配置。

checkdomain_assets_extra:
	encrypt_bundle: true
	assets_path: assets

安装 Assets

使用控制台命令 assets:install 可以根据配置安装所有资源。有关更多信息,请使用命令 assets:install --help

Twig asset() 函数

Twig 函数功能与以往相同。此外,还可以使用 逻辑文件名

test.html.twig

{{ asset('bundles/acmedemo/test.jpg') }}
{{ asset('@AcmeDemoBundle/test.jpg') }}

结果

/assets/e0b6011f/test.jpg
/assets/e0b6011f/test.jpg

Css-Rewrite-Filter

没有此包时,此过滤器只有在未在 Assetic 的 Twig 扩展中使用 逻辑文件名 时才能正常工作。该问题已解决,并且现在 CSS 文件本身也可以使用 逻辑文件名

/src/Acme/DemoBundle/Resources/public/css/test.css

// Zeigt auf: /src/Checkdomain/TwitterBootstrapBundle/Resources/public/css/bootstrap.css
@import url(@CheckdomainTwitterBootstrapBundle/css/bootstrap.css);

.logo {
	// Zeigt auf: /src/Acme/DemoBundle/Resources/public/img/logo.jpg
	background-image: url(../img/logo.jpg);
}

结果

@import url(/assets/19e3eda3/css/bootstrap.css);
	
.logo {
	background-image: url(/assets/19e3eda3/img/logo.jpg);
}

LessPHP-Compiler

这里值得注意的是,从不同包中导入,如果没有此包,则只能通过繁琐地指定完整目录路径才能实现。我们只需使用 逻辑文件名。在此示例中,我们使用了 TwitterBootstrapBundle

/src/Acme/DemoBundle/Resources/public/css/test.css

// Zeigt auf: /src/Checkdomain/TwitterBootstrapBundle/Resources/private/less/bootstrap.less
@import url(@CheckdomainTwitterBootstrapBundle/Resources/private/less/bootstrap.less);

注意:由于 Less 文件不一定要放在 public 目录下,因此这里需要指定完整路径,而在其他示例中,可以完全省略 Resources/public/ 路径,因为会自动从这个目录出发,因为只有这个目录在执行 assets:install 时会被复制。