我(试图)将 Assetic 与 Twig 和 Slim 一起使用(所以,没有 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 中?
项目自述文件中给出的示例给我留下了比我开始时更多的问题:
{% 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引用的每个资产...
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);
在我看来,这就像我会在构建步骤中运行一次(“循环遍历我的所有模板”)。但是,我认为 Assetic 也将支持资产的按需过滤(和缓存)。我显然不想在每个请求上循环遍历我的所有模板。writeManagerAssets
Twig扩展程序不应该自动触发相关调用吗?
任何帮助将不胜感激。