在Symfony之外使用Assetic的Css重写器

时间:2012-11-24 08:13:48

标签: assetic

首先让我说我完全不知道应该做什么,因为有关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的错误是什么?我不知道我应该传递什么路径到哪里。

感谢。

1 个答案:

答案 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();

我不太清楚,所以问你是否不明白。