2

我正在使用 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 文件?

知道出了什么问题吗?谢谢

4

1 回答 1

2

(即使在评论中回答了这个问题,添加一个真正的答案,这样这个问题就不会出现在 SO 的未回答列表中)

@ajshort 指出了为什么会发生这种情况:

您处于开发模式吗?如果是这样,SilverStripe 将不会合并文件以便于开发。

技术说明

在为Requirements_Backend该类完成繁重工作的Requirements类中,在处理组合文件期间有一行代码(SS 3.0SS 3.1)会影响它是否会组合。

直接取自 API 文档:

if((Director::isDev() && !$runningTest && !isset($_REQUEST['combine'])) || !$this->combined_files_enabled) {
    return;
}

基本上,如果您处于开发模式并且 SaphireTest没有运行并且没有称为“组合”的 GET 或 POST 变量集。

这意味着如果您包含一个名为“combine”( ?combine=false) 的查询参数,它仍会在您处于开发模式时合并文件。

于 2014-10-25T09:09:22.347 回答