What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
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()
<?php include('Smarty.class.php'); $smarty = new Smarty; $smarty->setCaching(true); // 按照URL来MD5生成一个特定的缓存ID $cache_id = md5($_SERVER['REQUEST_URI']); // 捕获输出 $output = $smarty->fetch('index.tpl', $cache_id); // 处理输出的内容 echo $output; ?>
Example 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脚本使用了PHP的
mail()
函数。
<?php // 从数据库或其他来源获取到$contact_info $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()
.