checkdomain / assets-extra-bundle
Symfony2 Bundle 用于扩展内置的资产管理
Requires
- php: >=5.3.3
- symfony/framework-bundle: >=2.1
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
时会被复制。