{include_php}

Notes techniques : {include_php} est presque obsolète dans Smarty. Vous pouvez obtenir des résultats équivalents en utilisant les fonctions utilisateur. La seule raison qui peut vous pousser à utiliser {include_php} est que vous avez besoin de mettre une de vos fonction en quarantaine vis à vis du répertoire des plugins ou de votre application. Reportez-vous à l'exemple des templates composants pour plus de détails.

Nom attributTypeRequisDéfautDescription
filechaîne de caractèreouin/aLe nom du fichier PHP à inclure
onceboléenNontrueInclure plusieurs fois ou non le fichier PHP si plusieurs demandes d'inclusions sont faîtes.
assignchaîne de caractèreNonn/ale nom de la variable PHP dans laquelle la sortie sera assignée plutôt que directement affichée.

Les balises {include_php} sont utilisées pour inclure directement un script PHP dans vos templates. Si "security" est activé, alors le script à exécuter doit être placé dans le chemin $trusted_dir. La balise {include_php} attends l'attribut "file", qui contient le chemin du fichier PHP à inclure, relatif à $trusted_dir, ou absolu.

Par défaut, les fichiers PHP ne sont inclus qu'une seule fois, même si la demande d'inclusion survient plusieurs fois dans le template. Vous pouvez demander à ce que ce fichier soit inclus à chaque demande grâce à l'attribut once. Mettre l'attribut once à false aura pour effet d'inclure le script PHP à chaque fois que demandé dans le template.

Vous pouvez donner une valeur à l'attribut optionnel assign, pour demander à la fonction {include_php} d'assigner la sortie du script PHP à la variable spécifiée plutôt que d'en afficher directement le résultat.

L'objet Smarty est disponible en tant que $this dans le script PHP inclus.

Exemple 7-13. Fonction {include_php}

load_nav.php

<?php

// charge des variables depuis une base de données mysql et les assigne au template.
require_once("MySQL.class.php");
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
$this->assign('sections',$sql->record);

?>

Où index.tpl est :

{* chemin absolu, ou relatif à $trusted_dir *}
{include_php file="/chemin/vers/load_nav.php"}

{foreach item="curr_section" from=$sections}
  <a href="{$curr_section.url}">{$curr_section.name}</a><br />
{/foreach}

Voir aussi {include}, {php}, {capture}, les ressources de template et les "composants templates".