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() — 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().