1

我(试图)将 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 也将支持资产的按需过滤(和缓存)。我显然不想在每个请求上循环遍历我的所有模板。writeManagerAssetsTwig扩展程序不应该自动触发相关调用吗?

任何帮助将不胜感激。

4

0 回答 0