在我的项目中,我使用下面的代码向资产添加一些命名资产,其中一个使用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转储资产时:转储一切在生产环境中正常工作但在开发环境中,此命名资产的lessphp过滤器仅在几次页面刷新后才起作用,经过一段时间后它不再起作用我需要删除所有缓存。删除缓存后再次正常工作......几分钟......
我还注意到当我编辑任何包扩展类(DependencyInjection / [BundleName] Extension.php)时它停止工作。
有谁知道我做错了什么?
答案 0 :(得分:0)
我怀疑这是因为问题reported here。 Assetic代码中存在一个错误,它会在渲染过程中错误地“清除”资产的过滤器,因此永远不会应用它们。
您应该可以通过使用php app/console cache:clear
清除缓存来可靠地重现它。但是,您应该能够通过完全删除开发缓存文件并重新加载页面来“修复”它。
我引用的PR未提交(它正在等待测试),但是您可以手动添加几行代码以确认它是您正在寻找的修复。