目前我有一个动态CSS文件,由PHP从数据库中的结果完成。目前我正在使用输出缓冲将动态文件转换为静态文件。转换为静态文件的工作方式类似于魅力,但该操作是从jQuery对话框窗口调用的。操作完成后,将打印一小段HTML以关闭对话框。
这就是问题所在。 HTML代码被打印而不是解析。我相信这是因为输出缓冲。当我评论缓冲代码时,一切都会再次起作用。
有人可以告诉我出了什么问题吗?
OB im使用的代码是:
ob_start();
$MC_ParseTemplateCall = 1; # is used in the include to set some values
require_once($Template); # Template contains the path and filename
$templateCss = ob_get_contents(); #using this to store it with fopen, fwrite & fclose
ob_end_clean();
从save.php这个文件(在jQuery对话框中执行)
<?php
// stuff to save template related settings happens above
# Make a static CSS file
ParseAndStoreTemplate(DIR_PATH_TO_ROOT."../website/Templates/MyTpl2011/CSS/MyTpl2011.php");
?>
<html>
<body onLoad="window.parent.CloseDialog();"></body>
</html>
存储模板的功能:
function ParseAndStoreTemplate($Template)
{
if(is_file($Template))
{
ob_start();
$MC_ParseTemplateCall = 1;
require_once($Template);
$templateCss = ob_get_contents();
ob_end_clean();
$fileName = end(explode("/", $Template));
$templateName = reset(explode(".php", $fileName));
$websitePath = DIR_PATH_TO_ROOT."../Global/Files/Website/".$GLOBALS["WebsiteId"]."/";
$templateFolder = "CSS";
if(!is_dir($websitePath.$templateFolder))
mkdir($websitePath.$templateFolder);
file_put_contents(
$websitePath.$templateFolder."/".$templateName,
$templateCss);
}
else
die("<strong>Opgegeven templatebestand bestaat niet</strong>: ".$Template);
}
答案 0 :(得分:0)
已经弄清楚了。似乎在输出缓冲期间Content-Type标头被更改。告诉浏览器它应该像text / html页面一样,对话框会像它应该的那样再次关闭。不管怎样,谢谢!