Использование Assetic's Css Rewriter вне Symfony

Позвольте мне начать с того, что я совершенно не понимаю, что должен делать, потому что документация и доступная информация по Assetic либо ограничены, либо ориентированы на Symfony.

Вот моя структура папок.

Assetic
   + assets
      + css
         + example.css
   + docs
   + src
   + tests
   + vendor
   + index.php
   + styles.php

Теперь у меня есть следующий тестовый код. В основном я клонировал чистую копию Assetic и запускал 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. Если я использую CSS URI Rewriter от Mr. Clay, я получаю ожидаемый результат.

url('/Assetic/assets/img/background.png');

Так что же я делаю не так с Assetic? Я понятия не имею, по каким путям я должен проходить и куда.

Спасибо.


person Jason Lewis    schedule 24.11.2012    source источник


Ответы (1)


Просто довольно тяжело с этим, но в конце концов (после прочтения документации по веббассетам, библиотеке 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();

Я не уверен, что смогу быть ясным, так что спрашивайте, если вы что-то не поняли.

person chadrien    schedule 28.11.2012
comment
Я все еще не могу заставить его работать. Целевой путь, вы имеете в виду абсолютный путь или URL-адрес. Глядя на источник Assetic, кажется, что он запрашивает URL-адрес цели активов. - person Jason Lewis; 04.12.2012
comment
Там, где я указал dirname($assetPath), предполагается, что это абсолютный путь к каталогу, содержащему файл css. «/assets/css» — это URL-адрес каталога ресурсов. $asset-›setTargetPath('/path/to/dumped/asset'); Здесь это абсолютный путь к каталогу, содержащему выгруженные активы. - person chadrien; 05.12.2012