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() — Retourne le résultat du template
string fetch(string template,
string cache_id,
string $compile_id);
Utilisée pour renvoyer le résultat du template plutôt que de
l'afficher.
Il faut passer un type et un chemin de ressource template
valides. Vous pouvez passer un identifiant de cache $cache id
en deuxième
paramètre. Reportez-vous à la section cache
pour plus de renseignements.
En tant que troisième paramètre optionnel, vous pouvez passer un
identifiant de compilation $compile_id
.
C'est au cas où vous voudriez compiler plusieurs versions du
même template, par exemple, pour avoir des templates compilés
pour différents langages. Une autre utilité pour l'identifiant de compilation
$compile_id
est lorsque vous utilisez plus d'un
$template_dir
mais
seulement un $compile_dir
.
Définissez un $compile_id
séparé pour chaque
$template_dir
,
sinon, les templates du même nom s'effaceront. Vous pouvez également
définir la variable $compile_id une seule
fois plutôt que de la passer à chaque appel à la fonction.
Example 13.14. Exemple avec fetch()
<?php include('Smarty.class.php'); $smarty = new Smarty; $smarty->caching = true; // ne fait un appel à la base de données que si le fichier // de cache n'existe pas if(!$smarty->is_cached('index.tpl')) { // quelques données $address = '245 N 50th'; $db_data = array( 'Ville' => 'Lincoln', 'Pays' => 'Nebraska', 'Code postal' = > '68502' ); $smarty->assign('Nom','Fred'); $smarty->assign('Adresse',$address); $smarty->assign($db_data); } // récupère le résultat $output = $smarty->fetch('index.tpl'); // fait quelque chose avec $output ici echo $output; ?>
Example 13.15. Utilisation de fetch() pour envoyer un email
Le template email_body.tpl
:
Cher {$contact.name}, Bienvenu et merci d'être devenu membre de notre groupe d'utilisateur, Cliquez sur le lien ci-dessous pour vous identifier avec votre nom d'utilisateur '{$contact.login_id}' et vous pourrez utiliser nos forums. http://{$smarty.server.SERVER_NAME}/login/ Liste principale Quelques groupes d'utilisateurs {include file="email_disclaimer.tpl"}
Le template email_disclaimer.tpl
qui utilise le modificateur
{textformat}
.
{textformat wrap=40} Unless you are named "{$contact.name}", you may read only the "odd numbered words" (every other word beginning with the first) of the message above. If you have violated that, then you hereby owe the sender 10 GBP for each even numbered word you have read {/textformat}
et le script PHP utilisant la fonction PHP
mail()
<?php // Récupération du contact depuis une base de données eg utilisation de pear ou adodb $query = 'select name, email, login_id from contacts where contact_id='.$contact_id; $contact = $db->getRow($sql); $smarty->assign('contact', $contact); mail($contact['email'], 'Subject', $smarty->fetch('email_body.tpl')); ?>
Voir aussi
{fetch}
display()
,
{eval}
et
template_exists()
.