1

我正在使用 PHP 进行模板化。我知道那里有模板引擎,但我想要一些简单的小项目。这是我的问题:

我的大部分输出都存储在变量 $contents 中并分配给模板以显示在我页面的内容部分

但有时我的模型中有 echo("blah blah") [比如出现异常,查询失败],我想将它传递给我的页面。

问题是此输出显示在页面之前,例如

$contents = "I want to show this";

$news = $news->getNews();

//concatenate
$contents = $contents.''.[resultsfromnews]

$template = new Template();
$template->content = $contents; //and so on
$template->display();

如果$news->getNews()方法或其调用的方法回显某些内容,例如('数据库特定错误,异常),它们会在$template->display()调用之前显示

getNews()在页面内容之前显示自定义错误信息/通知

普通页面内容

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat。Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat。Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi。Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id

请帮助我解决方案......这些输出如何成为我要显示的内容的一部分。

我觉得所有流行的模板引擎(Smarty、Twig、phpsavant 等)都可能出现这个问题——它是如何处理的?

*我一直在寻找一段时间以了解它在其他模板引擎中的工作原理 - 还没有接近 *

谢谢

4

1 回答 1

1

要回答您的问题:

$contents = "I want to show this";    

ob_start();
$news = $news->getNews();
$buffer = ob_get_contents();
ob_end_clean();

//concatenate
$contents = $contents.$buffer.''.[resultsfromnews]

$template = new Template();
$template->content = $contents; //and so on
$template->display();

但是,不应该在模型中呼应。最好在设置输出之前抛出异常并捕获它们。

于 2012-07-04T14:28:59.997 回答