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 plugins/
ou de votre application. Reportez-vous à l'exemple des
templates composants
pour plus de détails.
Nom attribut | Type | Requis | Défaut | Description |
---|---|---|---|---|
file | chaîne de caractère | oui | n/a | Le nom du fichier PHP à inclure |
once | boléen | Non | TRUE |
Inclure plusieurs fois ou non le fichier PHP si plusieurs demandes d'inclusions sont faîtes. |
assign | chaîne de caractère | Non | n/a | le 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.
Example 7.21. Fonction {include_php}
Le fichier 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ù le template est :
{* chemin absolu, ou relatif à $trusted_dir *} {include_php file='/chemin/vers/load_nav.php'} {foreach item='nav' from=$navigation} <a href="{$nav.url}">{$nav.name}</a><br /> {/foreach}
Voir aussi
{include}
,
$security
,
$trusted_dir
,
{php}
,
{capture}
, les
ressources de template et les
composants de templates.