1

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/*.sassREADME の他の場所については何も表示されません。彼らは何を話している?

最後に、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 拡張機能によって自動的にトリガーされるべきではありませんか?

どんな助けでも大歓迎です。

4

0 に答える 0