首先让我说我完全不知道应该做什么,因为有关Assetic的文档和可用信息有限或者面向Symfony。
这是我的文件夹结构。
Assetic
+ assets
+ css
+ example.css
+ docs
+ src
+ tests
+ vendor
+ index.php
+ styles.php
现在,我有以下测试代码。基本上我克隆了一份资产清洁副本并运行composer install
。然后,我创建了一个index.php
文件,该文件只链接到我的styles.php
文件,其中包含HTML <link>
标记。
这是我的styles.php
<?php
require 'vendor/autoload.php';
$assetPath = __DIR__.'/assets/css/example.css';
$assetBasePath = __DIR__.'/assets/css';
$asset = new Assetic\Asset\FileAsset($assetPath, array(), $assetBasePath, 'example.css');
header('Content-Type: text/css');
$asset->setTargetPath(__DIR__);
echo $asset->dump(new Assetic\Filter\CssRewriteFilter);
这是我的example.css
样式表。
body {
background-image: url('../img/background.png');
}
当我在浏览器中加载styles.php
时,我得到以下输出。
url('../img/background.png');
这与实际的CSS相同。如果我使用Clay先生的CSS URI重写器,我会得到预期的输出。
url('/Assetic/assets/img/background.png');
那么我对Assetic的错误是什么?我不知道我应该传递什么路径到哪里。
感谢。
答案 0 :(得分:2)
用它很难过,但最后(在阅读了webassets的文档,资产所依据的python库之后),我赢得了缺少文档的支持。
你去吧
<?php
require 'vendor/autoload.php';
$assetPath = __DIR__.'/assets/css/example.css';
$asset = new Assetic\Asset\FileAsset($assetPath, array(new Assetic\Filter\CssRewriteFilter), dirname($assetPath), '/assets/css');
// I assume the 'assets' directory is at the root of your website
header('Content-Type: text/css');
$asset->setTargetPath('/path/to/dumped/asset');
// As above, it's the path to the generated asset from your http root
echo $asset->dump();
我不太清楚,所以问你是否不明白。