我正在使用Silverstripe 3.0
我尝试将所有css文件合并到一个文件中:
$themeFolder = 'themes/' . SSViewer::current_theme() . '';
$cssFiles = array(
$themeFolder . '/css/reset.css',
$themeFolder . '/css/typography.css',
$themeFolder . '/css/jquery.fancybox.css',
$themeFolder . '/css/form.css'
);
array_walk($cssFiles,'Requirements::css');
Requirements::combine_files($themePath . 'css/core.css',$cssFiles);
Requirements::set_combined_files_folder('.');
Requirements::process_combined_files();
不幸的是,我没有一个文件core.css结合其他文件,我还有4个css文件。似乎silverstripe无权编写我的css文件?
知道出了什么问题吗?谢谢
答案 0 :(得分:2)
(即使在评论中回答这个问题,添加一个真正的答案,这样这个问题就不会出现在SO的未答复列表中)
@ajshort对于为什么会发生这种情况有所了解:
您是否处于开发模式?如果是这样,SilverStripe将不会合并文件以便于开发。
在对Requirements_Backend
类进行繁重工作的Requirements
类中,在处理组合文件时有一行代码(SS 3.0和SS 3.1)这会影响它是否会结合。
直接从API文档中获取:
if((Director::isDev() && !$runningTest && !isset($_REQUEST['combine'])) || !$this->combined_files_enabled) {
return;
}
基本上,如果您处于开发模式且 SaphireTest
未运行且,则表示没有名为&#34的GET或POST变量集。结合"
这意味着如果你包含一个名为&#34的查询参数; combine" (?combine=false
),当你处于开发模式时它仍会合并文件。