我(尝试)使用带有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
glob引用的每个资产...
我在README中的其他任何地方都看不到css/src/*.sass
的任何内容。他们在说什么?
最后,我在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);
在我看来,这就像我在构建步骤中运行一次(&#34;循环遍历所有模板&#34;)。但是,我认为Assetic还支持资产的按需过滤(和缓存)。我显然不想在每个请求上遍历所有模板。不应该通过Twig扩展程序自动触发对writeManagerAssets
的相关调用吗?
非常感谢任何帮助。