Twig と Slim で Assetic を使用しようとしています (つまり、Symfony なしで)。の作成の基本は理解できたと思いますがAssetCollection
、テンプレートでこのコレクションをリンクする方法がよくわかりません。
$fm = new FilterManager();
$factory = new AssetFactory('');
$factory->setDebug(true);
$factory->setFilterManager($fm);
$app->css = $factory->createAsset([
'assets://css/bootstrap-3.3.1.css',
'assets://css/bootstrap-custom.css',
'assets://css/paper.css'
], [
// Filters here
]);
のようなecho $app->css->dump();
ことをすると、すべての CSS が正しく出力されます。すばらしいですが、これを Twig に接続するにはどうすればよいですか?
プロジェクトの README に示されている例では、当初よりも多くの質問が残されています。
{% stylesheets '/path/to/sass/main.sass' filter='sass,?yui_css' output='css/all.css' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
一体何/path/to/sass/main.sass
ですか?を介して資産を宣言していると思いました$factory->createAsset
。ドキュメントには、次のように書かれています。
css/src/*.sass
拡張機能がデバッグ モードの場合、この同じタグは、グロブによって参照される各アセットに対して 1 つずつ、複数のリンク要素をレンダリングします...
css/src/*.sass
README の他の場所については何も表示されません。彼らは何を話している?
最後に、README の下部に次のように表示されます。
<?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);
これは、ビルドステップで一度実行するようなものに思えます (「すべてのテンプレートをループする」)。しかし、Assetic はアセットのオンデマンド フィルタリング (およびキャッシュ) もサポートすると思いました。すべてのリクエストですべてのテンプレートをループしたくないことは明らかです。関連する呼び出しはwriteManagerAssets
、Twig 拡張機能によって自動的にトリガーされるべきではありませんか?
どんな助けでも大歓迎です。