Assetic和Twig:请求和生成的文件名不匹配

时间:2014-05-11 21:51:46

标签: php twig assetic

我正在尝试使用Assetic与Twig配对,而不使用Symfony。我对树枝和资产有以下设置:

     /**
     * @param string $templateBaseDir Path to templates
     * @param string $cacheBaseDir Path to compilation cache
     */
    public function setupTwig($templateBaseDir, $cacheBaseDir)
    {
        $loader = new Twig_Loader_Filesystem($templateBaseDir);
        $this->twig = new Twig_Environment(
            $loader, array( /*'cache' => $cacheBaseDir,*/)
        );


        $factory = new AssetFactory(__DIR__ . '/../../Resources/public/');
        $factory->setDebug(true);

        $fm = new FilterManager();
        $fm->set('lessphp', new LessphpFilter());
        $fm->set('rewrite', new CssRewriteFilter());
        $factory->setFilterManager($fm);

        $this->twig->addExtension(new AsseticExtension($factory));
        $this->twig->addExtension(new Twig_Extension_Debug());

        $am = new LazyAssetManager($factory);
        $factory->setAssetManager($am);
        $am->setLoader('twig', new TwigFormulaLoader($this->twig));
        $am->addResource(new DirectoryResource(__DIR__ . '/../../Resources/views/'),'twig');

        $writer = new AssetWriter(__DIR__ . '/../../../../../../web');
        $writer->writeManagerAssets($am);

        $this->assetic = $factory;
    }

这有效地从twig扩展名生成所有请求的文件,但

{% stylesheets 'css/jquery-ui.css' %}
<LINK rel=stylesheet type=text/css href="{{ asset_url }}" media=all>
{% endstylesheets %}

可生产

<LINK rel=stylesheet type=text/css href="css/e9a2fc7_jquery-ui_1.css" media=all>

实际生成的文件名为css/e9a2fc7.css

如何使这些名称匹配?

1 个答案:

答案 0 :(得分:0)

我调查了source code of Assetic。如果用于调试组合脚本和样式表,则此行为。将Assetic移动到非调试模式会使代码按预期工作。

因此,每次使用combine=false而不是调试模式是必要的。

我不知道为什么Assetic会从网络上无法访问调试文件(生成一个名称并生成另一个名称)。

我稍后会尝试发布错误。

UPD。 combine=false不起作用,因为即使设置了Assetic也会在转储和请求带有fileparts的文件时生成合并文件(例如css/ae13694_data_tables_1.css而不是css/ae13694.css )。

对于历史 - 我很久以前就提出了一个错误 https://github.com/kriswallsmith/assetic/issues/613