$smarty->display() を使用する場合、ページを文字列として返す方法はありません。
Smarty のソース コードを見ると、display が実際には $smarty->fetch() と呼ばれ、$diaplay パラメータが true の場合はページが印刷され、false の場合は文字列であることがわかりました。が返されます。ソース コードを直接貼り付けます (... は省略された論理コードです)
public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null, $display = false, ...) { ... // display or fetch if ($display) { ... echo $_output; return; } else { ... return $_output; } }
ページのコンテンツを返すには次の構文を使用します
$smarty->fetch('xxx');