1

在我的项目中,我使用下面的代码将一些命名资产添加到资产中,其中一个使用 lessphp 过滤器。

public function prepend(ContainerBuilder $container)
{
    $configs = $container->getExtensionConfig($this->getAlias());
    $config = $this->processConfiguration(new Configuration(), $configs);

    $this->configureAsseticBundle($container, $config);
}

protected function configureAsseticBundle(ContainerBuilder $container, array $config)
{
    foreach (array_keys($container->getExtensions()) as $name) {
        switch ($name) {
            case 'assetic':
                $container->prependExtensionConfig(
                    $name,
                    array(
                        'assets' => array(
                            'some_less' => array(
                                'inputs' => array(
                                    '@SomeBundle/Resources/public/less/some.less'
                                ),
                                'filters' => array('lessphp'),
                            ),
                        )
                    )
                );
                break;
        }
    }
}

当我使用assetic:dump 转储资产时,生产环境中一切正常,但在开发环境中,此命名资产的lessphp 过滤器仅在刷新几次页面后才起作用,并且在一段时间后它不再起作用,我需要删除所有缓存。删除缓存后,它再次正常工作......几分钟......

我还注意到,当我编辑任何捆绑扩展类 (DependencyInjection/[BundleName]Extension.php) 时,它会停止工作。

有谁知道我做错了什么?

4

1 回答 1

0

我怀疑这是因为这里报告的问题。Assetic 代码中有一个错误会在渲染过程中错误地“清除”资产的过滤器,因此它们永远不会被应用。

您应该能够通过清除缓存来可靠地重现它php app/console cache:clear。但是您应该能够通过完全删除开发缓存文件并重新加载页面来“修复”它。

我引用的 PR 没有被提交(它正在等待测试),但它是几行代码,您可以手动添加以确认它是您正在寻找的修复程序。

于 2014-12-11T16:09:05.587 回答