Files
smarty/docs/fr/getting-started.xml

601 lines
20 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.15 Maintainer: yannick Status: ready -->
2005-12-10 22:09:38 +00:00
2004-03-28 15:18:57 +00:00
<part id="getting.started">
<title>Pour commencer</title>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<chapter id="what.is.smarty">
2004-05-23 15:50:53 +00:00
<title>Qu'est-ce que Smarty ?</title>
<para>
2004-03-28 15:18:57 +00:00
Smarty est un moteur de template pour PHP. Plus pr<70>cis<69>ment, il facilite
la s<>paration entre la logique applicative et la pr<70>sentation.
2004-12-26 21:12:45 +00:00
Cel<65> s'explique plus facilement dans une situation o<> le
2004-03-28 15:18:57 +00:00
programmeur et le designer de templates jouent des r<>les diff<66>rents, ou,
comme la plupart du temps, sont deux personnes distinctes.
2004-12-21 20:31:42 +00:00
</para>
<para>
2004-03-28 15:18:57 +00:00
Supposons par exemple que vous concevez une page Web qui affiche un
article de newsletter. Le titre, le sous-titre, l'auteur et le corps
sont des <20>l<EFBFBD>ments de contenu, ils ne contiennent aucune information
concernant la pr<70>sentation. Ils sont transmis <20> Smarty par l'application,
puis le designer de templates <20>ditent les templates et utilisent une
combinaison de balises HTML et de balises de templates pour formater
la pr<70>sentation de ces <20>l<EFBFBD>ments (tableaux HTML, couleurs d'arri<72>re-plan,
tailles des polices, feuilles de styles, etc.). Un beau jour le programmeur
a besoin de changer la fa<66>on dont le contenu de l'article
est r<>cup<75>r<EFBFBD> (un changement dans la logique applicative). Ce
changement n'affecte pas le designer de templates, le contenu
arrivera toujours au template de la m<>me fa<66>on. De m<>me, si le
le designer de templates veut changer compl<70>tement l'apparence
du template, aucun changement dans la logique de l'application
n'est n<>cessaire. Ainsi le programmeur peut changer la logique
de l'application sans restructurer les templates, et le designer
de templates peut changer les templates sans briser la logique
applicative.
2004-05-23 15:50:53 +00:00
</para>
<para>
Un des objectifs de Smarty est la s<>paration de la logique m<>tier de la
2004-12-26 21:12:45 +00:00
logique de pr<70>sentation. Cel<65> signifie que les templates peuvent contenir
des traitements, du moment qu'il soit relatif <20> de la pr<70>sentation.
Inclure d'autres templates, alterner les couleurs des lignes
d'un tableau, mettre du texte en majuscule, parcourir un tableau de donn<6E>es
pour l'afficher, etc. sont toutes des actions relatives <20> du traitement
2004-12-26 21:12:45 +00:00
de pr<70>sentation. Cel<65> ne signifie pas que Smarty requiert une telle s<>paration
de votre part. Smarty ne sais pas quoi est quoi, c'est donc <20> vous de placer
2004-12-21 20:31:42 +00:00
la logique de pr<70>sentation dans vos templates. Ainsi, si vous
<emphasis>ne d<>sirez pas</emphasis>
disposer de logique m<>tier dans vos templates, placez tous vos contenus
dans des variables au format texte uniquement.
2004-05-23 15:50:53 +00:00
</para>
<para>
2004-03-28 15:18:57 +00:00
L'un des aspects unique de Smarty est la compilation des templates.
2004-12-26 21:12:45 +00:00
Cel<65> signifie que Smarty lit les templates et cr<63>e des scripts PHP <20> partir
2004-03-28 15:18:57 +00:00
de ces derniers. Une fois cr<63><72>s, ils sont ex<65>cut<75>s.
Il n'y a donc pas d'analyse co<63>teuse de template <20> chaque requ<71>te,
et les templates peuvent b<>n<EFBFBD>ficier des solutions de cache PHP
2004-05-23 15:50:53 +00:00
comme Zend Accelerator (<ulink url="&url.zend;">&url.zend;</ulink>) ou
PHP Accelerator
(<ulink url="&url.php-accelerator;">&url.php-accelerator;</ulink>).
2004-05-23 15:50:53 +00:00
</para>
<para>
Quelques caract<63>ristiques de Smarty :
</para>
<itemizedlist>
2004-12-21 20:31:42 +00:00
<listitem>
<para>
Il est tr<74>s rapide.
</para>
</listitem>
<listitem>
<para>
Il est efficace, le parser PHP s'occupe du sale travail.
</para>
</listitem>
<listitem>
<para>
Pas d'analyse de template co<63>teuse, une seule compilation.
</para>
</listitem>
<listitem>
<para>
Il sait ne recompiler que les fichiers de templates qui ont <20>t<EFBFBD> modifi<66>s.
</para>
</listitem>
<listitem>
<para>
Vous pouvez cr<63>er des <link linkend="language.custom.functions">
fonctions utilisateurs</link> et des <link linkend="language.modifiers">
modificateurs de variables</link> personnalis<69>s, le langage de
template est donc extr<74>mement extensible.
</para>
</listitem>
<listitem>
<para>
Syntaxe des templates configurable, vous
2005-05-24 20:07:09 +00:00
pouvez utiliser {}, {{}}, &lt;!--{}--&gt;, etc. comme
<link linkend="variable.left.delimiter">d<EFBFBD>limiteurs tag</link>.
2004-12-21 20:31:42 +00:00
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Les instructions <link
linkend="language.function.if">if/elseif/else/endif</link>
2004-12-21 20:31:42 +00:00
sont pass<73>es au parser PHP, la syntaxe de l'expression {if...}
peut <20>tre aussi simple ou aussi complexe que vous
le d<>sirez.
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Imbrication illimit<69>e de <link linkend="language.function.section">sections</link>, de 'if', etc. autoris<69>e.
2004-12-21 20:31:42 +00:00
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Il est possible d'inclure du <link linkend="language.function.php">code PHP</link>
2004-12-26 21:12:45 +00:00
directement dans vos templates, bien que cel<65> ne soit pas obligatoire
2004-12-21 20:31:42 +00:00
(ni conseill<6C>), v<> que le moteur est extensible.
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Support de <link linkend="caching">cache</link> int<6E>gr<67>.
2004-12-21 20:31:42 +00:00
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Sources de <link
linkend="template.resources">templates</link> arbitraires.
2004-12-21 20:31:42 +00:00
</para>
</listitem>
<listitem>
<para>
2005-05-24 20:07:09 +00:00
Fonctions de <link
linkend="section.template.cache.handler.func">gestion de cache</link> personnalisables.
2004-12-21 20:31:42 +00:00
</para>
</listitem>
<listitem>
<para>
2005-07-10 19:27:50 +00:00
Architecture de <link linkend="plugins">plugins</link>
2004-12-21 20:31:42 +00:00
</para>
</listitem>
2004-05-23 15:50:53 +00:00
</itemizedlist>
2004-03-28 15:18:57 +00:00
</chapter>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<chapter id="installation">
<title>Installation</title>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<sect1 id="installation.requirements">
<title>Ce dont vous avez besoin</title>
<para>
2004-05-23 15:50:53 +00:00
Smarty n<>cessite un serveur Web utilisant PHP 4.0.6 ou sup<75>rieur.
2004-03-28 15:18:57 +00:00
</para>
</sect1>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<sect1 id="installing.smarty.basic">
2004-05-23 15:50:53 +00:00
<title>Installation de base</title>
<para>
2005-12-10 22:09:38 +00:00
Copiez les fichiers biblioth<74>ques de Smarty du sous-dossier
<filename>/libs/</filename> de la distribution <20> un emplacement
accessible <20> PHP. Ce sont des fichiers PHP que vous NE DEVEZ PAS
2004-03-28 15:18:57 +00:00
modifier. Ils sont partag<61>s par toutes les applications et ne seront
mis <20> jour que lorsque vous installerez une nouvelle version de
Smarty.
2004-05-23 15:50:53 +00:00
</para>
<example>
2005-07-10 19:27:50 +00:00
<title>fichiers n<>cessaires de la biblioth<74>que SMARTY</title>
2004-05-23 15:50:53 +00:00
<screen>
<![CDATA[
Smarty.class.php
Smarty_Compiler.class.php
Config_File.class.php
debug.tpl
2004-10-25 11:20:46 +00:00
/internals/*.php (tous)
2005-07-10 19:27:50 +00:00
/plugins/*.php (tous doivent <20>tre s<>r, peut-<2D>tre votre site n'a besoin seulement que d'un sous-ensemble)
]]>
2005-05-24 20:07:09 +00:00
</screen>
2004-12-26 21:12:45 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2005-12-10 22:09:38 +00:00
Smarty utilise une <ulink url="&url.php-manual;define">constante</ulink> PHP appel<65>e <link
linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link> qui
repr<70>sente le <emphasis role="bold">chemin complet</emphasis> de la biblioth<74>que Smarty.
En fait, si votre application trouve le fichier
2004-12-21 20:31:42 +00:00
<filename>Smarty.class.php</filename>, vous n'aurez pas
besoin de d<>finir la variable
<link linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link>,
2005-07-10 19:27:50 +00:00
Smarty s'en chargera pour vous.
2004-12-21 20:31:42 +00:00
En revanche, si <filename>Smarty.class.php</filename>
2004-05-23 15:50:53 +00:00
n'est pas dans votre r<>pertoire d'inclusion ou que vous ne
donnez pas un chemin absolu <20> votre application, vous
devez d<>finir <constant>SMARTY_DIR</constant> explicitement.
<constant>SMARTY_DIR</constant>
2005-12-10 22:09:38 +00:00
<emphasis role="bold">doit</emphasis> avoir <20>tre termin<69> par un slash.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
<title>Cr<EFBFBD>er une instance de Smarty</title>
<para>
Voici comment cr<63>er une instance de Smarty dans vos scripts PHP :
</para>
<programlisting role="php">
<![CDATA[
<?php
2005-12-10 22:09:38 +00:00
// Note : Smarty a un 'S' majuscule
require_once('Smarty.class.php');
$smarty = new Smarty();
?>
]]>
</programlisting>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2004-05-23 15:50:53 +00:00
Essayez de lancer le script ci-dessus. Si vous obtenez une erreur indiquant
2004-12-21 20:31:42 +00:00
que le fichier <filename>Smarty.class.php</filename> n'est pas trouv<75>,
tentez l'une des actions suivantes :
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
2005-12-10 22:09:38 +00:00
<title>D<EFBFBD>finition manuelle de la constante SMARTY_DIR</title>
<programlisting role="php">
<![CDATA[
<?php
2005-12-10 22:09:38 +00:00
// Style *nix (notez le 'S' majuscule)
define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');
// Style Windows
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
?>
]]>
</programlisting>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
2005-12-10 22:09:38 +00:00
<title>D<EFBFBD>finir le chemin absolu au fichier de la biblioth<74>que</title>
<programlisting role="php">
<![CDATA[
<?php
2005-12-10 22:09:38 +00:00
// Style *nix (notez le 'S' majuscule)
require_once('/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php');
// Style Windows
require_once('c:/webroot/libs/Smarty-v.e.r/libs/Smarty.class.php');
$smarty = new Smarty();
?>
2004-12-26 21:12:45 +00:00
]]>
</programlisting>
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
2005-12-10 22:09:38 +00:00
<title>Ajout du dossier contenant la biblioth<74>que <20> l'include_path de PHP</title>
<programlisting role="php">
<![CDATA[
<?php
2005-12-10 22:09:38 +00:00
// Editez votre fichier php.ini, ajoutez le dossier contenant la
// biblioth<74>que Smarty <20> l'include_path et red<65>marrez le serveur web.
// Puis, ce qui suit devrait fonctionner :
require_once('Smarty.class.php');
$smarty = new Smarty();
?>
]]>
</programlisting>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2004-05-23 15:50:53 +00:00
Maintenant que les fichiers de la librairie sont en place,
il est temps de d<>finir les r<>pertoires de Smarty, pour votre application.
2005-07-10 19:27:50 +00:00
</para>
<para>
2005-12-10 22:09:38 +00:00
Smarty a besoin de quatre r<>pertoires qui sont, par d<>faut,
2005-07-10 19:27:50 +00:00
<filename class="directory">'templates/'</filename>,
<filename class="directory">'templates_c/'</filename>,
<filename class="directory">'configs/'</filename> et
<filename class="directory">'cache/'</filename>.
</para>
<para>
Chacun d'entre eux peut <20>tre d<>fini
2005-05-24 20:07:09 +00:00
via les attributs <link linkend="variable.template.dir">
<varname>$template_dir</varname></link>,
<link linkend="variable.compile.dir">
<varname>$compile_dir</varname></link>, <link linkend="variable.config.dir">
<varname>$config_dir</varname></link> et
<link linkend="variable.cache.dir">
<varname>$cache_dir</varname></link> respectivement. Il est vivement
2004-05-23 15:50:53 +00:00
conseill<6C> que vous r<>gliez ces r<>pertoires s<>par<61>ment pour chaque
application qui utilise Smarty.
2004-03-28 15:18:57 +00:00
</para>
<para>
2004-05-23 15:50:53 +00:00
Assurez-vous de bien conna<6E>tre chemin de la racine
de votre arborescence Web. Dans notre exemple, la racine
2004-12-21 20:31:42 +00:00
est <filename
class="directory">/web/www.example.com/docs/</filename>. Seul Smarty
2004-05-23 15:50:53 +00:00
acc<63>de aux r<>pertoires en question, et jamais le serveur Web.
Pour des raisons de s<>curit<69>, il est donc conseill<6C> de
sortir ces r<>pertoires dans un r<>pertoire
<emphasis>en dehors</emphasis> de l'arborescence
Web.
2004-03-28 15:18:57 +00:00
</para>
<para>
2004-05-23 15:50:53 +00:00
Dans notre exemple d'installation, nous allons r<>gler l'environnement
de Smarty pour une application de livre d'or. Nous avons ici choisi
une application principalement pour mettre en <20>vidence une
convention de nommage des r<>pertoires. Vous pouvez utiliser le m<>me
environnement pour n'importe quelle autre application, il suffit de
remplacer <quote>livredor</quote> avec le nom de votre application.
Nous allons mettre nos r<>pertoires Smarty dans
2004-12-21 20:31:42 +00:00
<filename
class="directory">/web/www.example.com/smarty/livredor/</filename>.
2004-03-28 15:18:57 +00:00
</para>
<para>
2004-05-23 15:50:53 +00:00
Vous allez avoir besoin d'au moins un fichier <20> la racine de
l'arborescence Web,
il s'agit du script auquel l'internaute a acc<63>s. Nous allons l'appeler
2005-07-10 19:27:50 +00:00
<emphasis>'index.php'</emphasis> et le placer dans un sous-r<>pertoire
appel<65> <filename class="directory">/livredor/</filename>.
2004-12-21 20:31:42 +00:00
</para>
<note>
<title>Technical Note</title>
<para>
2004-12-26 21:12:45 +00:00
Il est pratique de configurer le serveur Web de
sorte que <filename>index.php</filename> soit identifi<66> comme fichier
2004-12-26 21:12:45 +00:00
par d<>faut de ce r<>pertoire. Aicnsi, si l'on tape
<literal>http://www.example.com/livredor/</literal>, le script
<filename>index.php</filename> soit ex<65>cut<75> sans que
<filename>index.php</filename> ne soit sp<73>cifi<66> dans l'URL. Avec
Apache, vous pouvez r<>gler cela en ajoutant <filename>index.php</filename>
<20> la ligne o<> se trouve <literal>DirectoryIndex</literal> (s<>parez chaque entr<74>e
par un espace) dans le <filename>httpd.conf</filename>.
<informalexample>
<programlisting>
<![CDATA[DirectoryIndex index.htm index.html index.cgi index.php]]>
</programlisting>
</informalexample>
</para>
</note>
2004-03-28 15:18:57 +00:00
<para>
2004-05-23 15:50:53 +00:00
Jetons un coup d'oeil <20> la structure de fichier obtenue :
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
<title>Structure de fichiers</title>
2004-12-26 21:12:45 +00:00
<screen>
<![CDATA[
2005-12-10 22:09:38 +00:00
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Config_File.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/debug.tpl
/usr/local/lib/php/Smarty-v.e.r/libs/internals/*.php
/usr/local/lib/php/Smarty-v.e.r/libs/plugins/*.php
/web/www.example.com/smarty/guestbook/templates/
/web/www.example.com/smarty/guestbook/templates_c/
/web/www.example.com/smarty/guestbook/configs/
/web/www.example.com/smarty/guestbook/cache/
/web/www.example.com/docs/guestbook/index.php
]]>
2004-12-26 21:12:45 +00:00
</screen>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2005-07-10 19:27:50 +00:00
Smarty a besoin d'<emphasis role="bold">acc<EFBFBD>der en <20>criture</emphasis>
aux r<>pertoires <link linkend="variable.compile.dir">
<parameter>$compile_dir</parameter></link> et <link linkend="variable.cache.dir">
<parameter>$cache_dir</parameter></link>,
2004-05-23 15:50:53 +00:00
assurez-vous donc que le serveur Web dispose de ces droits d'acc<63>s.
Il s'agit g<>n<EFBFBD>ralement de l'utilisateur "nobody" et du group
"nobody". Pour les utilisateurs de OS X, l'utilisateur par d<>faut
est "web" et le group "web". Si vous utilisez Apache, vous pouvez
parcourir le fichier <filename>httpd.conf</filename> (en g<>n<EFBFBD>ral dans
2004-05-23 15:50:53 +00:00
"/usr/local/apache/conf/") pour d<>terminer quel est l'utilisateur
et le groupe auquel il appartient.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
<title>r<EFBFBD>gler les permissions d'acc<63>s</title>
<programlisting role="shell">
<![CDATA[
2004-12-21 20:31:42 +00:00
chown nobody:nobody /web/www.example.com/smarty/livredor/templates_c/
chmod 770 /web/www.example.com/smarty/livredor/templates_c/
2004-12-21 20:31:42 +00:00
chown nobody:nobody /web/www.example.com/smarty/livredor/cache/
chmod 770 /web/www.example.com/smarty/livredor/cache/
]]>
</programlisting>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<note>
<title>Note</title>
2004-05-23 15:50:53 +00:00
<para>
La commande chmod 770 est relativement bien s<>curis<69>e, elle donne
<20> l'utilisateur "nobody" et au groupe "nobody" les acc<63>s en
lecture/<2F>criture aux r<>pertoires. Si vous voulez donner le droit d'acc<63>s
en lecture <20> tout le monde (principalement pour pouvoir acc<63>der
vous-m<>me <20> ces fichiers), vous pouvez lui pr<70>f<EFBFBD>rer chmod 775.
</para>
</note>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
Nous devons cr<63>er le fichier <filename>index.tpl</filename> que Smarty va charger.
Il va se trouver dans le dossier
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
<title>Notre /web/www.example.com/smarty/templates/index.tpl</title>
2004-05-23 15:50:53 +00:00
<screen>
<![CDATA[
{* Smarty *}
2005-12-10 22:09:38 +00:00
Bonjour, {$name}, Bienvenue dans Smarty !
2004-12-26 21:12:45 +00:00
]]>
</screen>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<note>
<title>Note technique</title>
<para>
<literal>{* Smarty *}</literal> est un
<link linkend="language.syntax.comments">commentaire</link>
2005-07-10 19:27:50 +00:00
de template. Il n'est pas obligatoire mais il est bon de commencer tous vos templates
2004-12-26 21:12:45 +00:00
avec ce commentaire. Cel<65> rend le fichier facilement
2004-05-23 15:50:53 +00:00
reconnaissable en plus de son extension. Les <20>diteurs
de texte peuvent par exemple reconna<6E>tre le fichier et
adapter la coloration syntaxique.
</para>
</note>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
Maintenant passons <20> l'<27>dition du fichier <filename>index.php</filename>. Nous allons
cr<63>er une instance de Smarty,
2006-09-30 09:14:40 +00:00
<link linkend="api.assign"><varname>assigner</varname></link>
2005-12-10 22:09:38 +00:00
une valeur <20> une variable de template et
<link linkend="api.display">afficher</link> le r<>sultat avec <filename>index.tpl</filename>.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<example>
2005-07-10 19:27:50 +00:00
<title><EFBFBD>dition de /web/www.example.com/docs/livredor/index.php</title>
2005-12-10 22:09:38 +00:00
<programlisting role="php">
<![CDATA[
2005-05-24 20:07:09 +00:00
<?php
2005-12-10 22:09:38 +00:00
// charge la biblioth<74>que Smarty
require_once(SMARTY_DIR . 'Smarty.class.php');
2005-05-24 20:07:09 +00:00
2005-12-10 22:09:38 +00:00
$smarty = new Smarty();
2005-05-24 20:07:09 +00:00
2005-12-10 22:09:38 +00:00
$smarty->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$smarty->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$smarty->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$smarty->cache_dir = '/web/www.example.com/smarty/livredor/cache/';
2005-05-24 20:07:09 +00:00
2005-12-10 22:09:38 +00:00
$smarty->assign('name','Ned');
2005-05-24 20:07:09 +00:00
2005-12-10 22:09:38 +00:00
$smarty->display('index.tpl');
?>
]]>
2005-12-10 22:09:38 +00:00
</programlisting>
2004-05-23 15:50:53 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<note>
<title>Note techique</title>
<para>
Dans notre exemple, nous avons configur<75> les chemins absolus
pour chacun des r<>pertoires Smarty. Si
2005-07-10 19:27:50 +00:00
<filename
class="directory">/web/www.example.com/smarty/livredor/</filename>
2004-12-21 20:31:42 +00:00
est dans votre include_path PHP alors ces r<>glages ne sont pas n<>cessaires.
2005-07-10 19:27:50 +00:00
Quoi qu'il en soit, il est plus efficace et (par exp<78>rience)
2004-05-23 15:50:53 +00:00
moins g<>n<EFBFBD>rateur d'erreurs de les d<>finir avec des chemins
2004-12-26 21:12:45 +00:00
absolus. Cel<65> nous garantit que Smarty r<>cup<75>rera les bons fichiers.
2004-05-23 15:50:53 +00:00
</para>
</note>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2004-12-21 20:31:42 +00:00
Et maintenant appelez le fichier <filename>index.php</filename> avec navigateur
2005-12-10 22:09:38 +00:00
Web. Vous devriez voir "Bonjour, Ned, Bienvenue dans Smarty !".
2004-03-28 15:18:57 +00:00
</para>
<para>
2004-05-23 15:50:53 +00:00
Vous venez de terminer l'installation de base de Smarty !
2004-03-28 15:18:57 +00:00
</para>
2004-05-23 15:50:53 +00:00
</sect1>
<sect1 id="installing.smarty.extended">
2004-03-28 15:18:57 +00:00
<title>Configuration avanc<6E>e</title>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2004-05-23 15:50:53 +00:00
Ceci est la suite de <link
linkend="installing.smarty.basic">l'installation de base</link>, veuillez
lire cette derni<6E>re avant de poursuivre.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<para>
2004-05-23 15:50:53 +00:00
Une mani<6E>re un peu plus commode de configurer Smarty est de faire votre
propre classe fille et de l'initialiser selon votre environnement.
De la sorte, nous n'aurons plus besoin de configurer <20> chaques fois les
chemins de notre environnement. Cr<43>ons un nouveau r<>pertoire
<filename>/php/includes/livredor/</filename> et un nouveau fichier
appel<65> <filename>setup.php</filename>.
Dans notre exemple d'environnement, <filename>/php/includes</filename> est notre
2004-05-23 15:50:53 +00:00
include_path PHP. Assurez-vous de faire la m<>me chose ou alors d'utiliser
des chemins absolus.
2004-03-28 15:18:57 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<example>
<title><EFBFBD>dition de /php/includes/livredor/setup.php</title>
2004-12-26 21:12:45 +00:00
<programlisting role="php">
<![CDATA[
<?php
// charge la librairie Smarty
require('Smarty.class.php');
2005-05-24 20:07:09 +00:00
// le fichier setup.php est un bon
// endroit pour charger les fichiers
// de librairies de l'application et vous pouvez
// faire cel<65> juste ici. Par exemple :
// require('livredor/livredor.lib.php');
2005-05-24 20:07:09 +00:00
class Smarty_livredor extends Smarty {
2005-05-24 20:07:09 +00:00
function Smarty_livredor() {
2005-05-24 20:07:09 +00:00
// Constructeur de la classe.
// Appel<65> automatiquement <20> l'instanciation de la classe.
2005-05-24 20:07:09 +00:00
$this->Smarty();
2005-05-24 20:07:09 +00:00
$this->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$this->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$this->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$this->cache_dir = '/web/www.example.com/smarty/livredor/cache/';
2005-05-24 20:07:09 +00:00
$this->caching = true;
$this->assign('app_name', 'Guest Book');
}
2005-05-24 20:07:09 +00:00
}
?>
]]>
</programlisting>
2004-03-28 15:18:57 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<para>
Modifions maintenant le fichier <filename>index.php</filename> pour qu'il utilise
<filename>setup.php</filename>
2004-05-23 15:50:53 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
<example>
2005-07-10 19:27:50 +00:00
<title><EFBFBD>dition de /web/www.example.com/docs/livredor/index.php</title>
2004-12-26 21:12:45 +00:00
<programlisting role="php">
<![CDATA[
2005-05-24 20:07:09 +00:00
<?php
require('livredor/setup.php');
2005-05-24 20:07:09 +00:00
$smarty = new Smarty_livredor();
2005-05-24 20:07:09 +00:00
$smarty->assign('name','Ned');
2005-05-24 20:07:09 +00:00
$smarty->display('index.tpl');
2005-05-24 20:07:09 +00:00
?>
]]>
2005-07-10 19:27:50 +00:00
</programlisting>
2004-12-26 21:12:45 +00:00
</example>
2005-05-24 20:07:09 +00:00
2004-05-23 15:50:53 +00:00
<para>
Vous savez maintenant qu'il est facile de cr<63>er une instance de Smarty,
correctement configur<75>e, en utilisant <literal>Smarty_livredor()</literal>
qui initialise automatiquement tout ce qu'il faut pour votre application.
2004-05-23 15:50:53 +00:00
</para>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
</sect1>
2005-05-24 20:07:09 +00:00
2004-03-28 15:18:57 +00:00
</chapter>
</part>
<!-- 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
2005-05-24 20:07:09 +00:00
-->