如何将模型层的消息或输出集成到模板化页面中


How to integrate messages or outputs from Model layer into a templated page

我正在用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 沃鲁帕特。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 无常饮食穹顶ID

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

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

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

谢谢

回答您的问题:

$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();

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