Smarty 图标

您可以根据商标通告使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他咨询,请发送电子邮件至

使用 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()