2012-02-12 85 views
0

我使用的是Assetic與Twig但不是symfony2框架。資產不生成任何文件

這裏的項目是如何建立

/site 
    /template 
     /css 

/public_html 
    /css 

原始CSS是存儲/site/template/css下,我想assetic的CSS和輸出它運行如下,以/public_html/css

這裏的assetic是如何在我的模板設置爲一個樹枝延伸

$factory = new AssetFactory(//absolute path to `/site/template/`); 
$factory->setDefaultOutput(//absolute path to `/public_html/`); 
$factory->setDebug(false); 
$twig->addExtension(new AsseticExtension($factory)); 

然後:

{% stylesheets 'css/screen.css' output='css/*' %} 
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" /> 
{% endstylesheets %} 

我可以看到assetic在最終輸出已經生成一個唯一的網址:

<link href="css/00da241.css" type="text/css" rel="stylesheet" /> 

但是,如果我查看/public_html/css,文件永遠不會生成!

我使用Windows 7服務器與Apache和PHP沒有問題寫入文件的任何地方。

這可能是什麼原因造成的?

回答

3

你在這裏所做的是要求資產生成URL的資產(使用樹枝)。

但資產url並不指向任何文件。你還是要生成它們,使用轉儲腳本:

<?php 

use Assetic\AssetWriter; 
use Assetic\Extension\Twig\TwigFormulaLoader; 
use Assetic\Extension\Twig\TwigResource; 
use Assetic\Factory\LazyAssetManager; 

$am = new LazyAssetManager($factory); 

// enable loading assets from twig templates 
$am->setLoader('twig', new TwigFormulaLoader($twig)); 

// loop through all your templates 
foreach ($templates as $template) { 
    $resource = new TwigResource($twigLoader, $template); 
    $am->addResource($resource, 'twig'); 
} 

$writer = new AssetWriter('/path/to/web'); 
$writer->writeManagerAssets($am); 

此腳本使用樹枝模板來定義文件轉儲。 當然,您將必須定義$templates變量和$twig變量。

+0

Thanks florian :)在開發過程中是否有替代方案來運行轉儲腳本?每次更改資產然後在瀏覽器中測試時,運行腳本效率不高。 – F21 2012-02-12 23:08:13

+0

Assetic非常靈活,同時又如此複雜以至於很難說:)但是這個文檔可以幫助你https://github.com/kriswallsmith/assetic/blob/master/docs/en/build.md – Florian 2012-02-13 08:11:12

+0

由於我使用的是樹枝,我希望遠離編寫我自己的輸出腳本:)我看到有一個symfony控制檯腳本來監視文件夾並編譯任何更改,但是,因爲我沒有使用symfony,所以沒有目前的問題。但是,我會四處尋找,看看我能否找到解決方案。 symfony包中還有一些我喜歡的東西:cache busting和basePath,所以我可能不得不考慮自己的實現。我將這個標記爲正確的,因爲這解決了我爲什麼沒有創建文件的問題:) – F21 2012-02-13 08:43:41