Helper Smarty
1Présentation
Ce helper est utile pour traiter traiter des templates Smarty au sein d'une application, pour générer des flux (texte, HTML, XML ou autre) en dehors du traitement de la vue par le framework.
Il s'instancie via le composant d'injection de dépendances.
Sa méthode render() prend en paramètre le chemin vers le template Smarty à utiliser (chemin absolu ou chemin relatif sous le répertoire templates/ du projet), et un tableau associatif contenant les variables à rendre accessible dans le template.
Sa méthode eval() s'utilise de manière similaire, mais attend en premier paramètre le contenu d'un template Smarty, et non pas un chemin vers un fichier.
Sa méthode templateExists() prend en paramètre le chemin vers un template, et retourne un booléen indiquant si le template existe ou non.
2Utilisation
Exemple simple :
// définition du template
$template = 'chemin/vers/template.tpl';
// données de template
$data = [
'var1' => 'value1',
'var2' => 'value2',
];
// instanciation via le loader
$html = $this->_loader['\Temma\Utils\Smarty']->render($template, $data);
Exemple avancé :
use \Temma\Exceptions\IO as TµIOException;
// données de template
$data = [
'name' => 'Luke',
'mentor' => 'Yoda',
];
try {
// chemin vers le fichier de template
$path = 'path/to/template.tpl';
// template processing
$html = $this->_loader['\Temma\Utils\Smarty']->render($path, $data);
} catch (TµIOException $e) {
// variable containing Smarty code
$smarty = "Hi {$name}, disciple of {$mentor}";
// template processing
$html = $this->_loader['\Temma\Utils\Smarty']->eval($smarty, $data);
}
// check the existence of a template file
if ($this->_loader['Temma\Utils\Smarty']->templateExists($path)) {
print("The template exists.");
}