Php 包含在ob_start()之后,不会发生任何事情
我试图用一个函数呈现我的视图 但是如果启动Php 包含在ob_start()之后,不会发生任何事情,php,model-view-controller,view,render,Php,Model View Controller,View,Render,我试图用一个函数呈现我的视图 但是如果启动ob_clean(),之后的所有代码都不会影响某些内容。如果我在ob_clean()之前包含,我会看到模板 public function render($template, $data = array()) { if (!empty($data)) { extract($data); } $templatePath = TEMPLATE_DIR . $template . '.tpl'; ob_s
ob_clean()
,之后的所有代码都不会影响某些内容。如果我在ob_clean()
之前包含,我会看到模板
public function render($template, $data = array())
{
if (!empty($data))
{
extract($data);
}
$templatePath = TEMPLATE_DIR . $template . '.tpl';
ob_start();
if (!is_file($templatePath))
{
return 'No template found!';
}
include $templatePath;
$content = ob_get_contents();
ob_end_clean();
return $content;
}
尝试将
return$content
替换为echo$content
并不能解决您的问题,但您可以使用它,您不需要分别调用ob\u get\u contents()
和ob\u end\u clean()
。哦,真的吗?好吧,这不能回答我的问题。但是很高兴知道:)谢谢我能想到的唯一一件事是确保您没有忘记回显render()
函数的结果。我需要回显吗?我制作了一个test.tpl文件,其中只有一个单词需要测试。如果我包括这个正常的,没有ob_clean()的所有工作。你需要使用echo render()
。或者,您可以将return$content
替换为echo$content