什么是 Smarty?
为什么使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
fetch() — 返回模板输出
string fetch(string template,
string cache_id,
string compile_id);
这将返回模板输出,而不是显示它。提供有效的模板资源类型和路径。您可以传递$cache id
作为可选的第二个参数,有关更多信息,请参见缓存部分。
您可以传递$compile_id
作为可选的第三个参数。这是当您想要编译同一模板的不同版本时的情形,比如为不同的语言编译单独的模板。您还可以将 $compile_id
变量设置一次,而不是将其传递给该函数的每次调用。
示例 14.21. fetch()
<?php include('Smarty.class.php'); $smarty = new Smarty; $smarty->setCaching(true); // set a separate cache_id for each unique URL $cache_id = md5($_SERVER['REQUEST_URI']); // capture the output $output = $smarty->fetch('index.tpl', $cache_id); // do something with $output here echo $output; ?>
示例 14.22. 使用 fetch() 发送电子邮件
email_body.tpl
模板
Dear {$contact_info.name}, 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. {$login_url} 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. {/textformat}
使用 PHP mail()
函数的 PHP 脚本
<?php // get $contact_info from db or other resource here $smarty->assign('contact_info',$contact_info); $smarty->assign('login_url',"http://{$_SERVER['SERVER_NAME']}/login"); mail($contact_info['email'], 'Thank You', $smarty->fetch('email_body.tpl')); ?>
另请参阅 {fetch}
display()
,{eval}
,以及 templateExists()
。