Files
smarty/docs/fr/designers/language-builtin-functions/language-function-include-php.xml
2005-05-10 21:15:40 +00:00

151 lines
4.9 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.3 Maintainer: gerald Status: ready -->
<sect1 id="language.function.include.php">
<title>include_php</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Défaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>file</entry>
<entry>chaîne de caractère</entry>
<entry>oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le nom du fichier PHP à inclure</entry>
</row>
<row>
<entry>once</entry>
<entry>boléen</entry>
<entry>Non</entry>
<entry><emphasis>true</emphasis></entry>
<entry>Inclure plusieurs fois ou non le fichier PHP si
plusieurs demandes d'inclusions sont faîtes.</entry>
</row>
<row>
<entry>assign</entry>
<entry>chaîne de caractère</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>le nom de la variable PHP dans laquelle la sortie
sera assignée plutôt que directement affichée.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<title>Technical Note</title>
<para>
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 <link
linkend="tips.componentized.templates"> templates composants</link>
pour plus de détails.
</para>
</note>
<para>
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.
</para>
<para>
include_php est un moyen agréable pour gérer des "composants templates",
tout en conservant le code PHP en dehors du template lui même.
Supposons que vous ayez un template reprenant la navigation de votre
site, elle même récupérée depuis une base de données. Vous pouvez
conserver la logique du code PHP récupérant le contenu de la base dans
un emplacement séparé, et l'inclure depuis votre template. Maintenant,
vous pouvez utiliser ce template n'importe ou, sans vous inquiéter de
savoir si les informations nécessaires ont bien étés assignées
par l'application, avant la demande d'affichage.
</para>
<para>
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 <emphasis>once</emphasis>. Mettre l'attribut once à
false aura pour effet d'inclure le script PHP à chaque fois que demandé
dans le template.
</para>
<para>
Vous pouvez donner une valeur à l'attribut optionnel
<emphasis>assign</emphasis>, pour demander à la fonction
<emphasis>include_php</emphasis> d'assigner la sortie du script PHP
à la variable spécifiée plutôt que d'en afficher directement le résultat.
</para>
<para>
L'objet Smarty est disponible en tant que $this dans le script PHP inclus.
</para>
<example>
<title>Fonction include_php</title>
<programlisting>
<![CDATA[
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);
?>
]]>
</programlisting>
<para>
Où index.tpl est :
</para>
<programlisting>
<![CDATA[
{* 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}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->