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 aliquameratvolutpat。Ut wisi enim ad minim veniam、quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex eacommodoconsequat。Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molstie consequat、vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue 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 に答える