fetch() — returns the template output
string fetch(string template,
string cache_id,
string compile_id);
This returns the template output instead of
displaying it.
Supply a valid template resource
type and path. As an optional second parameter, you can pass a
$cache id
, see the caching
section for more information.
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); // 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; ?>
Example 14.22. Using fetch() to send an email
The email_body.tpl
template
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}
The php script using the PHP
mail()
function
<?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')); ?>
See also
{fetch}
display()
,
{eval}
,
and
templateExists()
.