fetch() — 取得输出内容


string fetch(string template,
             string cache_id,
             string compile_id);

该函数将取得一个模板输出的内容,而不是显示出来。 该函数需要指定一个合法的模板资源的类型和路径。 第二个可选的参数$cache_id设置缓存,详情参见 缓存

As an optional third parameter, you can pass a $compile_id. This is in the event that you want to compile different versions of the same template, such as having separate templates compiled for different languages. You can also set the $compile_id variable once instead of passing this to each call to this function.

Example 14.21. fetch()

$smarty = new Smarty;


// 按照URL来MD5生成一个特定的缓存ID
$cache_id = md5($_SERVER['REQUEST_URI']);

// 捕获输出
$output = $smarty->fetch('index.tpl', $cache_id);

// 处理输出的内容
echo $output;


Example 14.22. 用fetch()来发邮件


Dear {$},

Welcome and thank you for signing up as a member of our user group.

Click on the link below to login with your user name
of '{$contact_info.username}' so you can post in our forums.


List master

{textformat wrap=40}
This is some long-winded disclaimer text that would automatically get wrapped
at 40 characters. This helps make the text easier to read in mail programs that
do not wrap sentences for you.


该PHP脚本使用了PHP的 mail()函数。


// 从数据库或其他来源获取到$contact_info


mail($contact_info['email'], 'Thank You', $smarty->fetch('email_body.tpl'));



参见 {fetch} display(), {eval}, 和 templateExists().