sync with EN

#Un biberon, un commit ! Merci Ewan ;)
This commit is contained in:
yannick
2006-09-30 03:20:52 +00:00
parent b9ae51f37f
commit e6183de5ea
5 changed files with 272 additions and 210 deletions

View File

@@ -1,16 +1,35 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: didou Status: ready --> <!-- EN-Revision: 1.5 Maintainer: didou Status: ready -->
<chapter id="resources"> <chapter id="resources">
<title>Ressources</title> <title>Ressources</title>
<para> <para>
La page Web de Smarty se trouve <20> l'adresse suivante : &url.smarty; La page Web de Smarty se trouve <20> l'adresse suivante :
Vous pouvez souscrire <20> la mailing liste en envoyant un email <20> <ulink url="&url.smarty;">&url.smarty;</ulink>
&ml.general.sub;.
Les archives de la mailing list se trouvent <20> l'adresse suivante :
&url.ml.archive;
</para> </para>
<itemizedlist>
<listitem><para>
Vous pouvez souscrire <20> la mailing liste en envoyant un email <20>
<literal>&ml.general.sub;</literal>.
Les archives de la mailing list se trouvent <20> l'adresse suivante :
<ulink url="&url.ml.archive;">ici</ulink>
</para></listitem>
<listitem><para>
Les forums sur <ulink url="&url.forums;">&url.forums;</ulink>
</para></listitem>
<listitem><para>
Le wiki sur <ulink url="&url.wiki;">&url.wiki;</ulink>
</para></listitem>
<listitem><para>
Le chat sur <ulink url="&url.wiki;">irc.freenode.net#smarty</ulink>
</para></listitem>
<listitem><para>
La FAQ <ulink url="&url.faq_1;">ici</ulink> et <ulink url="&url.faq_2;">ici</ulink>
</para></listitem>
</itemizedlist>
</chapter> </chapter>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:
mode: sgml mode: sgml
@@ -30,4 +49,4 @@ End:
vim600: syn=xml fen fdm=syntax fdl=2 si vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml vim: et tw=78 syn=sgml
vi: ts=1 sw=1 vi: ts=1 sw=1
--> -->

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.11 Maintainer: didou Status: ready --> <!-- EN-Revision: 1.12 Maintainer: didou Status: ready -->
<chapter id="tips"> <chapter id="tips">
<title>Trucs et astuces</title> <title>Trucs et astuces</title>
@@ -10,13 +10,21 @@
<para> <para>
Peut-<2D>tre voudrez-vous des fois afficher une valeur par Peut-<2D>tre voudrez-vous des fois afficher une valeur par
d<>faut pour une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme d<>faut pour une variable qui n'a pas <20>t<EFBFBD> assign<67>e, comme
pour afficher "&amp;nbsp;" afin que les couleurs de fond pour afficher <literal>&amp;nbsp;</literal> afin que les couleurs
des tableaux fonctionnent. Beaucoup utiliseraient une de fond des tableaux fonctionnent. Beaucoup utiliseraient une
instruction <link linkend="language.function.if">{if}</link> instruction <link linkend="language.function.if"><varname>{if}</varname></link>
pour g<>rer cel<65>, mais il existe un moyen pour g<>rer cel<65>, mais il existe un moyen
plus facile dans Smarty : l'utilisation du modificateur plus facile dans Smarty : l'utilisation du modificateur
de variable <link de variable
linkend="language.modifier.default"><emphasis>d<EFBFBD>faut</emphasis></link>. <link linkend="language.modifier.default"><varname>default</varname></link>.
<note>
<para>Les erreurs <quote>de variable ind<6E>finie</quote> seront affich<63>s si
la fonction PHP
<ulink url="&url.php-manual;error_reporting">
<varname>error_reporting()</varname></ulink> vaut <constant>E_ALL</constant>
et qu'une variable n'a pas <20>t<EFBFBD> assign<67>e <20> Smarty.
</para>
</note>
</para> </para>
<example> <example>
<title>Afficher &amp;nbsp; quand une variable est vide</title> <title>Afficher &amp;nbsp; quand une variable est vide</title>
@@ -36,8 +44,8 @@
</programlisting> </programlisting>
</example> </example>
<para> <para>
Voir aussi Voir aussi
<link linkend="language.modifier.default">default</link> et <link linkend="language.modifier.default"><varname>default</varname></link> et
<link linkend="tips.default.var.handling">la gestion des variables par d<>faut</link>. <link linkend="tips.default.var.handling">la gestion des variables par d<>faut</link>.
</para> </para>
</sect1> </sect1>
@@ -46,12 +54,14 @@
<title>Gestion des variables par d<>faut</title> <title>Gestion des variables par d<>faut</title>
<para> <para>
Si une variable est utilis<69>e fr<66>quemment dans vos templates, Si une variable est utilis<69>e fr<66>quemment dans vos templates,
lui appliquer le modificateur par d<>faut peut <20>tre un peu fastidieux. lui appliquer le modificateur
<link linkend="language.modifier.default"><varname>default</varname></link>
peut <20>tre un peu fastidieux.
Vous pouvez rem<65>dier <20> cel<65> en lui assignant une valeur par d<>faut Vous pouvez rem<65>dier <20> cel<65> en lui assignant une valeur par d<>faut
avec la fonction <link linkend="language.function.assign">{assign}</link>. avec la fonction <link linkend="language.function.assign"><varname>{assign}</varname></link>.
</para> </para>
<example> <example>
<title>assigner une valeur par d<>faut <20> une variable de template</title> <title>Assigner une valeur par d<>faut <20> une variable de template</title>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
{* faites cela quelque part en haut de votre template *} {* faites cela quelque part en haut de votre template *}
@@ -64,7 +74,7 @@
</example> </example>
<para> <para>
Voir aussi Voir aussi
<link linkend="language.modifier.default">default</link> et <link linkend="language.modifier.default"><varname>default</varname></link> et
<link linkend="tips.blank.var.handling">la gestion des variables non-assign<67>es</link>. <link linkend="tips.blank.var.handling">la gestion des variables non-assign<67>es</link>.
</para> </para>
</sect1> </sect1>
@@ -74,18 +84,18 @@
<para> <para>
Quand la majorit<69> de vos templates utilisent les m<>mes en-t<>te et pied-de-page, Quand la majorit<69> de vos templates utilisent les m<>mes en-t<>te et pied-de-page,
il est d'usage de les mettre dans leurs propres templates et de les inclure il est d'usage de les mettre dans leurs propres templates et de les inclure
(<link linkend="language.function.include">{include}</link>). (<link linkend="language.function.include"><varname>{include}</varname></link>).
Mais comment faire si l'en-t<>te doit avoir un titre diff<66>rent, selon la page Mais comment faire si l'en-t<>te doit avoir un titre diff<66>rent, selon la page
d'o<> on vient ? Vous pouvez passer le titre <20> l'en-t<>te en tant qu' d'o<> on vient ? Vous pouvez passer le titre <20> l'en-t<>te en tant qu'
<link linkend="language.syntax.attributes">attribut</link> quand il est inclus. <link linkend="language.syntax.attributes">attribut</link> quand il est inclus.
</para> </para>
<example> <example>
<title>passer le titre au template d'en-t<>te</title> <title>Passer le titre au template d'en-t<>te</title>
<para> <para>
<filename>mainpage.tpl</filename> - Lorsque la page principal est construite, <filename>mainpage.tpl</filename> - Lorsque la page principal est construite,
le titre 'Man Page' est pass<73> au <filename>header.tpl</filename> et sera utilis<69> le titre <quote>Man Page</quote> est pass<73> au <filename>header.tpl</filename> et sera utilis<69>
en tant que titre. en tant que titre.
</para> </para>
<programlisting> <programlisting>
@@ -98,12 +108,13 @@
<para> <para>
<filename>archives.tpl</filename> - Lorsque la page principal est construite, le titre <filename>archives.tpl</filename> - Lorsque la page principal est construite, le titre
sera 'Archives'. Notez que dans cet exemple, nous utilisons une variable du fichier sera <quote>Archives</quote>. Notez que dans cet exemple, nous utilisons une variable du fichier
<filename>archives_page.conf</filename> au lieu d'une variable classique. <filename>archives_page.conf</filename> au lieu d'une variable classique.
</para> </para>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
{config_load file='archive_page.conf'} {config_load file='archive_page.conf'}
{include file='header.tpl' title=#archivePageTitle#} {include file='header.tpl' title=#archivePageTitle#}
{* corps du template ici *} {* corps du template ici *}
{include file='footer.tpl'} {include file='footer.tpl'}
@@ -111,9 +122,9 @@
</programlisting> </programlisting>
<para> <para>
<filename>header.tpl</filename> - Notez que "Smarty News" est affich<63> si la variable <filename>header.tpl</filename> - Notez que <quote>Smarty News</quote> est affich<63>
$title n'est pas d<>finie, en utilisant le modificateur de variable par si la variable <literal>$title</literal> n'est pas d<>finie, en utilisant le modificateur de variable par
<link linkend="language.modifier.default">d<EFBFBD>faut</link>. <link linkend="language.modifier.default"><varname>default</varname></link>.
</para> </para>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
@@ -142,18 +153,11 @@
<para> <para>
De fa<66>on g<>n<EFBFBD>rale, essayez de toujours passer les dates <20> Smarty De fa<66>on g<>n<EFBFBD>rale, essayez de toujours passer les dates <20> Smarty
sous forme de <ulink url="&url.php-manual;time">timestamp</ulink>. sous forme de <ulink url="&url.php-manual;time">timestamp</ulink>.
Cel<EFBFBD> permet aux designers de templates d'utiliser Cela permet aux designers de templates d'utiliser
<link linkend="language.modifier.date.format">date_format</link> <link linkend="language.modifier.date.format"><varname>date_format</varname></link>
pour avoir un contr<74>le total sur le formatage des dates et de comparer pour avoir un contr<74>le total sur le formatage des dates et de comparer
facilement les dates entre elles. facilement les dates entre elles.
</para> </para>
<note>
<para>
A partir Smarty 1.4.0, vous pouvez passer les dates <20> Smarty
sous la forme de timestamps Unix ou MySQL, ou tout autre format de dates
que comprend <ulink url="&url.php-manual;strtotime">strtotime()</ulink>.
</para>
</note>
<example> <example>
<title>Utilisation de date_format</title> <title>Utilisation de date_format</title>
<programlisting> <programlisting>
@@ -166,7 +170,7 @@
</para> </para>
<screen> <screen>
<![CDATA[ <![CDATA[
Jan 4, 2001 Jan 4, 2009
]]> ]]>
</screen> </screen>
<programlisting> <programlisting>
@@ -179,10 +183,13 @@ Jan 4, 2001
</para> </para>
<screen> <screen>
<![CDATA[ <![CDATA[
2001/01/04 2009/01/04
]]> ]]>
</screen> </screen>
<programlisting> <para>
Les dates peuvent <20>tre compar<61>es dans le template en utilisant les timestamps, comme ceci :
</para>
<programlisting>
<![CDATA[ <![CDATA[
{if $date1 < $date2} {if $date1 < $date2}
... ...
@@ -191,7 +198,8 @@ Jan 4, 2001
</programlisting> </programlisting>
</example> </example>
<para> <para>
En utilisant la fonction <link linkend="language.function.html.select.date">{html_select_date}</link> En utilisant la fonction
<link linkend="language.function.html.select.date"><varname>{html_select_date}</varname></link>
dans un template, le programmeur veut en g<>n<EFBFBD>ral convertir le dans un template, le programmeur veut en g<>n<EFBFBD>ral convertir le
r<>sultat d'un formulaire en un timestamp. r<>sultat d'un formulaire en un timestamp.
Voici une fonction qui devrait vous <20>tre utile. Voici une fonction qui devrait vous <20>tre utile.
@@ -210,13 +218,13 @@ $startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day);
function makeTimeStamp($year='', $month='', $day='') function makeTimeStamp($year='', $month='', $day='')
{ {
if(empty($year)) { if(empty($year)) {
$year = strftime("%Y"); $year = strftime('%Y');
} }
if(empty($month)) { if(empty($month)) {
$month = strftime("%m"); $month = strftime('%m');
} }
if(empty($day)) { if(empty($day)) {
$day = strftime("%d"); $day = strftime('%d');
} }
return mktime(0, 0, 0, $month, $day, $year); return mktime(0, 0, 0, $month, $day, $year);
@@ -228,10 +236,10 @@ function makeTimeStamp($year='', $month='', $day='')
<para> <para>
Voir aussi Voir aussi
<link linkend="language.function.html.select.date">{html_select_date}</link>, <link linkend="language.function.html.select.date"><varname>{html_select_date}</varname></link>,
<link linkend="language.function.html.select.time">{html_select_time}</link>, <link linkend="language.function.html.select.time"><varname>{html_select_time}</varname></link>,
<link linkend="language.modifier.date.format">date_format</link> et <link linkend="language.modifier.date.format"><varname>date_format</varname></link> et
<link linkend="language.variables.smarty.now">$smarty.now</link>, <link linkend="language.variables.smarty.now"><parameter>$smarty.now</parameter></link>,
</para> </para>
</sect1> </sect1>
@@ -311,8 +319,9 @@ function insert_header()
Traditionnellemnt, la programmation avec des templates dans les applications Traditionnellemnt, la programmation avec des templates dans les applications
se d<>roule de la fa<66>on suivante : d'abord vous r<>cup<75>rez vos variables se d<>roule de la fa<66>on suivante : d'abord vous r<>cup<75>rez vos variables
dans l'application PHP (peut-<2D>tre avec des requ<71>tes en base de donn<6E>es), puis dans l'application PHP (peut-<2D>tre avec des requ<71>tes en base de donn<6E>es), puis
vous instanciez votre objet Smarty, <link linkend="api.assign">assign()</link> vous instanciez votre objet Smarty,
les variables et <link linkend="api.display">display()</link> le <link linkend="api.assign"><varname>assign()</varname></link>
les variables et <link linkend="api.display"><varname>display()</varname></link> le
template. Disons par exemple que nous avons un t<>l<EFBFBD>scripteur dans template. Disons par exemple que nous avons un t<>l<EFBFBD>scripteur dans
notre template. Nous r<>cup<75>rerions les donn<6E>es dans notre application, notre template. Nous r<>cup<75>rerions les donn<6E>es dans notre application,
puis les assignerions ensuite pour les afficher. Mais ne serait-ce pas puis les assignerions ensuite pour les afficher. Mais ne serait-ce pas
@@ -329,7 +338,7 @@ function insert_header()
<para> <para>
<filename>function.load_ticker.php</filename> - <filename>function.load_ticker.php</filename> -
Efface le fichier du r<>pertoire des Efface le fichier du r<>pertoire des
<link linkend="variable.plugins.dir">$plugins</link> <link linkend="variable.plugins.dir"><parameter>$plugins</parameter></link>
</para> </para>
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
@@ -367,9 +376,9 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
</example> </example>
<para> <para>
Voir aussi Voir aussi
<link linkend="language.function.include.php">{include_php}</link>, <link linkend="language.function.include.php"><varname>{include_php}</varname></link>,
<link linkend="language.function.include">{include}</link> et <link linkend="language.function.include"><varname>{include}</varname></link> et
<link linkend="language.function.php">{php}</link>. <link linkend="language.function.php"><varname>{php}</varname></link>.
</para> </para>
</sect1> </sect1>
<sect1 id="tips.obfuscating.email"> <sect1 id="tips.obfuscating.email">
@@ -380,14 +389,13 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
adresses est de parcourir les pages Web. Voici une fa<66>on de rem<65>dier adresses est de parcourir les pages Web. Voici une fa<66>on de rem<65>dier
<20> ce probl<62>me : mettre votre adresse email dans du Javascript brouill<6C> <20> ce probl<62>me : mettre votre adresse email dans du Javascript brouill<6C>
au milieu de votre source HTML, sans que cel<65> ne g<>ne l'affichage sur le au milieu de votre source HTML, sans que cel<65> ne g<>ne l'affichage sur le
navigateur Web. Cel<EFBFBD> est fait gr<67>ce au plugin navigateur Web. Cela est fait gr<67>ce au plugin
<link linkend="language.function.mailto">{mailto}</link>. <link linkend="language.function.mailto"><varname>{mailto}</varname></link>.
</para> </para>
<example> <example>
<title>Exemple de dissimulation d'une adresse email</title> <title>Exemple de dissimulation d'une adresse email</title>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
{* dans le template *}
<div id="contact">Envoyer une demande <20> <div id="contact">Envoyer une demande <20>
{mailto address=$EmailAddress encode='javascript' subject='Bonjour'} {mailto address=$EmailAddress encode='javascript' subject='Bonjour'}
]]> ]]>
@@ -403,8 +411,8 @@ Stock Name: {$ticker.name} Stock Price: {$ticker.price}
</note> </note>
<para> <para>
Voir aussi Voir aussi
<link linkend="language.modifier.escape">escape</link> et <link linkend="language.modifier.escape"><varname>escape</varname></link> et
<link linkend="language.function.mailto">{mailto}</link>. <link linkend="language.function.mailto"><varname>{mailto}</varname></link>.
</para> </para>
</sect1> </sect1>
</chapter> </chapter>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer:gerald Status: ready --> <!-- EN-Revision: 1.5 Maintainer:gerald Status: ready -->
<chapter id="troubleshooting"> <chapter id="troubleshooting">
<title>Diagnostic des erreurs</title> <title>Diagnostic des erreurs</title>
<para></para> <para></para>
@@ -13,15 +14,15 @@
</para> </para>
<example> <example>
<title>erreurs Smarty</title> <title>erreurs Smarty</title>
<screen> <screen>
<![CDATA[ <![CDATA[
Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah' Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
in /path/to/smarty/Smarty.class.php on line 1041 in /path/to/smarty/Smarty.class.php on line 1041
Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
in /path/to/smarty/Smarty.class.php on line 1041 in /path/to/smarty/Smarty.class.php on line 1041
]]> ]]>
</screen> </screen>
</example> </example>
<para> <para>
@@ -38,131 +39,135 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
<example> <example>
<title>Erreur d'analyse PHP</title> <title>Erreur d'analyse PHP</title>
<screen> <screen>
<![CDATA[ <![CDATA[
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75 Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75
]]> ]]>
</screen> </screen>
</example> </example>
<para> <para>
Quand vous rencontrez une erreur d'analyse PHP, le num<75>ro de la ligne Quand vous rencontrez une erreur d'analyse PHP, le num<75>ro de la ligne
indiqu<71> est celui du fichier PHP compil<69> et non du template. Vous pouvez alors indiqu<71> est celui du fichier PHP compil<69> et non du template. Vous pouvez alors
regarder le template et d<>tecter l'erreur. Voici quelques erreurs fr<66>quentes : regarder le template et d<>tecter l'erreur. Voici quelques erreurs fr<66>quentes :
balises fermantes pour <link linkend="language.function.if">{if}{/if}</link> balises fermantes pour
ou <link linkend="language.function.if">{section}{/section}</link> manquantes, ou <link linkend="language.function.if"><varname>{if}{/if}</varname></link>
syntaxe logique incorrecte dans une instruction {if}. Si vous ne trouvez pas l'erreur, ou
vous devrez alors ouvrir le fichier PHP compil<69> et aller <20> la ligne correspondante pour <link linkend="language.function.if"><varname>{section}{/section}</varname></link>
trouver d'o<> vient l'erreur. manquantes, ou syntaxe logique incorrecte dans une instruction <varname>{if}</varname>.
Si vous ne trouvez pas l'erreur, vous devrez alors ouvrir le fichier PHP compil<69> et aller <20> la
ligne correspondante pour trouver d'o<> vient l'erreur.
</para> </para>
<example> <example>
<title>Autres erreurs communes</title> <title>Autres erreurs communes</title>
<screen>
<itemizedlist>
<listitem>
<screen>
<![CDATA[ <![CDATA[
Warning: Smarty error: unable to read resource: "index.tpl" in... Warning: Smarty error: unable to read resource: "index.tpl" in...
ou ou
Warning: Smarty error: unable to read resource: "site.conf" in... Warning: Smarty error: unable to read resource: "site.conf" in...
]]> ]]>
</screen> </screen>
<para> <para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Le dossier <link linkend="variable.template.dir">$template_dir</link> Le dossier
est incorrect, n'existe pas ou le fichier <link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>
the file <filename>index.tpl</filename> n'est pas dans le dossier est incorrect, n'existe pas ou le fichier
<filename class="directory">templates/</filename>. the file <filename>index.tpl</filename> n'est pas dans le dossier
</para> <filename class="directory">templates/</filename>.
</listitem> </para>
<listitem> </listitem>
<para> <listitem>
Une fonction <link linkend="language.function.config.load">{config_load}</link> <para>
est dans un template (ou Une fonction
<link linkend="api.config.load">config_load()</link> <link linkend="language.function.config.load"><varname>{config_load}</varname></link>
a <20>t<EFBFBD> appel<65>) et soit est dans un template (ou
<link linkend="variable.config.dir">$config_dir</link> <link linkend="api.config.load"><varname>config_load()</varname></link>
est incoh<6F>rent, n'existe pas, ou a <20>t<EFBFBD> appel<65>) et soit
<filename>site.conf</filename> n'est pas dans le dossier. <link linkend="variable.config.dir"><varname>$config_dir</varname></link>
</para> est incoh<6F>rent, n'existe pas, ou
</listitem> <filename>site.conf</filename> n'est pas dans le dossier.
</para>
</itemizedlist> </listitem>
</para> </itemizedlist>
</para>
</listitem><listitem> <screen>
<![CDATA[
<screen> Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
<![CDATA[ or is not a directory...
Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist, ]]>
or is not a directory... </screen>
]]> <itemizedlist>
</screen> <listitem>
<para> <para>
Soit le dossier Soit le dossier
<link linkend="variable.compile.dir">$compile_dir</link> <link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>
n'est pas correctement d<>fini, le dossier n'existe pas, ou n'est pas correctement d<>fini, le dossier n'existe pas, ou
<filename>templates_c</filename> est un fichier et non un dossier. <filename>templates_c</filename> est un fichier et non un dossier.
</para> </para>
</listitem><listitem> </listitem>
<screen> </itemizedlist>
<![CDATA[ <screen>
Fatal error: Smarty error: unable to write to $compile_dir '.... <![CDATA[
]]> Fatal error: Smarty error: unable to write to $compile_dir '....
</screen> ]]>
</screen>
<itemizedlist>
<listitem>
<para> <para>
Le dossier <link linkend="variable.compile.dir">$compile_dir</link> Le dossier <link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>
n'est pas accessible en <20>criture par le serveur web. Voir le bas n'est pas accessible en <20>criture par le serveur web. Voir le bas
de la page sur l'<link linkend="installing.smarty.basic">installation de de la page sur l'<link linkend="installing.smarty.basic">installation de
Smarty</link> pour les permissions. Smarty</link> pour les permissions.
</para> </para>
</listitem>
</itemizedlist>
</listitem><listitem> <screen>
<screen>
<![CDATA[ <![CDATA[
Fatal error: Smarty error: the $cache_dir 'cache' does not exist, Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /.. or is not a directory. in /..
]]> ]]>
</screen> </screen>
<itemizedlist>
<listitem>
<para> <para>
Cela signifie que Cela signifie que
<link linkend="variable.caching">$caching</link> est activ<69> et soit <link linkend="variable.caching"><parameter>$caching</parameter></link> est activ<69> et soit
le dossier le dossier
<link linkend="variable.cache.dir">$cache_dir</link> <link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
n'est pas correctement d<>fini, le dossier n'existe pas, ou n'est pas correctement d<>fini, le dossier n'existe pas, ou
<filename>cache</filename> est un fichier et non un dossier. <filename>cache</filename> est un fichier et non un dossier.
</para> </para>
</listitem>
</itemizedlist>
</listitem><listitem> <screen>
<screen>
<![CDATA[ <![CDATA[
Fatal error: Smarty error: unable to write to $cache_dir '/... Fatal error: Smarty error: unable to write to $cache_dir '/...
]]> ]]>
</screen> </screen>
<itemizedlist>
<listitem>
<para> <para>
Cela signifie que Cela signifie que
<link linkend="variable.caching">$caching</link> est activ<69> et le dossier <link linkend="variable.caching"><parameter>$caching</parameter></link> est activ<69> et
<link linkend="variable.cache.dir">$cache_dir</link> le dossier
<link linkend="variable.cache.dir"><parameter>$cache_dir</parameter></link>
n'est pas accessible en <20>criture par le serveur web. Voir le bas n'est pas accessible en <20>criture par le serveur web. Voir le bas
de la page sur l'<link linkend="installing.smarty.basic">installation de de la page sur l'<link linkend="installing.smarty.basic">installation de
Smarty</link> pour les permissions. Smarty</link> pour les permissions.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</example> </example>
<para> <para>
Voir aussi Voir aussi
<link linkend="chapter.debugging.console">le d<>bogage</link>, <link linkend="chapter.debugging.console">le d<>bogage</link>,
<link linkend="variable.error.reporting">$error_reporting</link> et <link linkend="variable.error.reporting"><parameter>$error_reporting</parameter></link> et
<link linkend="api.trigger.error">trigger_error()</link>. <link linkend="api.trigger.error"><varname>trigger_error()</varname></link>.
</para> </para>
</sect1> </sect1>
</chapter> </chapter>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.13 Maintainer: yannick Status: ready --> <!-- EN-Revision: 1.15 Maintainer: yannick Status: ready -->
<part id="getting.started"> <part id="getting.started">
<title>Pour commencer</title> <title>Pour commencer</title>
@@ -157,8 +157,8 @@
<title>Installation de base</title> <title>Installation de base</title>
<para> <para>
Copiez les fichiers biblioth<74>ques de Smarty du sous-dossier Copiez les fichiers biblioth<74>ques de Smarty du sous-dossier
/libs/ de la distribution <20> un emplacement accessible <20> PHP. <filename>/libs/</filename> de la distribution <20> un emplacement
Ce sont des fichiers PHP que vous NE DEVEZ PAS accessible <20> PHP. Ce sont des fichiers PHP que vous NE DEVEZ PAS
modifier. Ils sont partag<61>s par toutes les applications et ne seront modifier. Ils sont partag<61>s par toutes les applications et ne seront
mis <20> jour que lorsque vous installerez une nouvelle version de mis <20> jour que lorsque vous installerez une nouvelle version de
Smarty. Smarty.
@@ -179,25 +179,26 @@ debug.tpl
<para> <para>
Smarty utilise une <ulink url="&url.php-manual;define">constante</ulink> PHP appel<65>e <link Smarty utilise une <ulink url="&url.php-manual;define">constante</ulink> PHP appel<65>e <link
linkend="constant.smarty.dir">SMARTY_DIR</link> qui 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, repr<70>sente le <emphasis role="bold">chemin complet</emphasis> de la biblioth<74>que Smarty.
si votre application trouve le fichier En fait, si votre application trouve le fichier
<filename>Smarty.class.php</filename>, vous n'aurez pas <filename>Smarty.class.php</filename>, vous n'aurez pas
besoin de d<>finir la variable <link linkend="constant.smarty.dir">SMARTY_DIR</link>, besoin de d<>finir la variable
<link linkend="constant.smarty.dir"><constant>SMARTY_DIR</constant></link>,
Smarty s'en chargera pour vous. Smarty s'en chargera pour vous.
En revanche, si <filename>Smarty.class.php</filename> En revanche, si <filename>Smarty.class.php</filename>
n'est pas dans votre r<>pertoire d'inclusion ou que vous ne n'est pas dans votre r<>pertoire d'inclusion ou que vous ne
donnez pas un chemin absolu <20> votre application, vous donnez pas un chemin absolu <20> votre application, vous
devez d<>finir SMARTY_DIR explicitement. SMARTY_DIR devez d<>finir <constant>SMARTY_DIR</constant> explicitement.
<constant>SMARTY_DIR</constant>
<emphasis role="bold">doit</emphasis> avoir <20>tre termin<69> par un slash. <emphasis role="bold">doit</emphasis> avoir <20>tre termin<69> par un slash.
</para> </para>
<para>
Voici comment cr<63>er une instance de Smarty dans vos scripts PHP :
</para>
<example> <example>
<title>cr<EFBFBD>er une instance de Smarty</title> <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"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
@@ -305,8 +306,8 @@ $smarty = new Smarty();
une application principalement pour mettre en <20>vidence une une application principalement pour mettre en <20>vidence une
convention de nommage des r<>pertoires. Vous pouvez utiliser le m<>me convention de nommage des r<>pertoires. Vous pouvez utiliser le m<>me
environnement pour n'importe quelle autre application, il suffit de environnement pour n'importe quelle autre application, il suffit de
remplacer "livredor" avec le nom de votre application. Nous allons remplacer <quote>livredor</quote> avec le nom de votre application.
mettre nos r<>pertoires Smarty dans Nous allons mettre nos r<>pertoires Smarty dans
<filename <filename
class="directory">/web/www.example.com/smarty/livredor/</filename>. class="directory">/web/www.example.com/smarty/livredor/</filename>.
</para> </para>
@@ -322,18 +323,19 @@ $smarty = new Smarty();
<title>Technical Note</title> <title>Technical Note</title>
<para> <para>
Il est pratique de configurer le serveur Web de Il est pratique de configurer le serveur Web de
sorte que 'index.php' soit identifi<66> comme fichier sorte que <filename>index.php</filename> soit identifi<66> comme fichier
par d<>faut de ce r<>pertoire. Aicnsi, si l'on tape par d<>faut de ce r<>pertoire. Aicnsi, si l'on tape
'http://www.example.com/livredor/', le script 'index.php' soit <literal>http://www.example.com/livredor/</literal>, le script
ex<EFBFBD>cut<EFBFBD> sans que 'index.php' ne soit sp<73>cifi<EFBFBD> dans l'URL. Avec Apache, <filename>index.php</filename> soit ex<65>cut<EFBFBD> sans que
vous pouvez r<>gler cela en ajoutant 'index.php' <20> la ligne o<> se <filename>index.php</filename> ne soit sp<73>cifi<66> dans l'URL. Avec
trouve <emphasis>DirectoryIndex</emphasis> (s<>parez chaque entr<74>e par un espace) Apache, vous pouvez r<>gler cela en ajoutant <filename>index.php</filename>
dans le httpd.conf. <EFBFBD> la ligne o<> se trouve <literal>DirectoryIndex</literal> (s<>parez chaque entr<74>e
</para> par un espace) dans le <filename>httpd.conf</filename>.
<para> <informalexample>
<emphasis>DirectoryIndex <programlisting>
index.htm index.html index.php index.php3 default.html index.cgi <![CDATA[DirectoryIndex index.htm index.html index.cgi index.php]]>
</emphasis> </programlisting>
</informalexample>
</para> </para>
</note> </note>
<para> <para>
@@ -341,7 +343,7 @@ $smarty = new Smarty();
</para> </para>
<example> <example>
<title>Exemple de structure de fichiers</title> <title>Structure de fichiers</title>
<screen> <screen>
<![CDATA[ <![CDATA[
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php /usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php
@@ -364,13 +366,13 @@ $smarty = new Smarty();
<para> <para>
Smarty a besoin d'<emphasis role="bold">acc<EFBFBD>der en <20>criture</emphasis> Smarty a besoin d'<emphasis role="bold">acc<EFBFBD>der en <20>criture</emphasis>
aux r<>pertoires <link linkend="variable.compile.dir"> aux r<>pertoires <link linkend="variable.compile.dir">
<emphasis>$compile_dir</emphasis></link> et <link linkend="variable.cache.dir"> <parameter>$compile_dir</parameter></link> et <link linkend="variable.cache.dir">
<emphasis>$cache_dir</emphasis></link>, <parameter>$cache_dir</parameter></link>,
assurez-vous donc que le serveur Web dispose de ces droits d'acc<63>s. 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 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 "nobody". Pour les utilisateurs de OS X, l'utilisateur par d<>faut
est "web" et le group "web". Si vous utilisez Apache, vous pouvez est "web" et le group "web". Si vous utilisez Apache, vous pouvez
parcourir le fichier httpd.conf (en g<>n<EFBFBD>ral dans parcourir le fichier <filename>httpd.conf</filename> (en g<>n<EFBFBD>ral dans
"/usr/local/apache/conf/") pour d<>terminer quel est l'utilisateur "/usr/local/apache/conf/") pour d<>terminer quel est l'utilisateur
et le groupe auquel il appartient. et le groupe auquel il appartient.
</para> </para>
@@ -389,7 +391,7 @@ chmod 770 /web/www.example.com/smarty/livredor/cache/
</example> </example>
<note> <note>
<title>Note technique</title> <title>Note</title>
<para> <para>
La commande chmod 770 est relativement bien s<>curis<69>e, elle donne 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 <20> l'utilisateur "nobody" et au groupe "nobody" les acc<63>s en
@@ -400,12 +402,13 @@ chmod 770 /web/www.example.com/smarty/livredor/cache/
</note> </note>
<para> <para>
Nous devons cr<63>er le fichier 'index.tpl' que Smarty va charger. 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">$template_dir</link>. Il va se trouver dans le dossier
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>.
</para> </para>
<example> <example>
<title>Edition de /web/www.example.com/smarty/templates/index.tpl</title> <title>Notre /web/www.example.com/smarty/templates/index.tpl</title>
<screen> <screen>
<![CDATA[ <![CDATA[
@@ -420,7 +423,8 @@ Bonjour, {$name}, Bienvenue dans Smarty !
<note> <note>
<title>Note technique</title> <title>Note technique</title>
<para> <para>
{* Smarty *} est un <link linkend="language.syntax.comments">commentaire</link> <literal>{* Smarty *}</literal> est un
<link linkend="language.syntax.comments">commentaire</link>
de template. Il n'est pas obligatoire mais il est bon de commencer tous vos templates de template. Il n'est pas obligatoire mais il est bon de commencer tous vos templates
avec ce commentaire. Cel<65> rend le fichier facilement avec ce commentaire. Cel<65> rend le fichier facilement
reconnaissable en plus de son extension. Les <20>diteurs reconnaissable en plus de son extension. Les <20>diteurs
@@ -430,10 +434,11 @@ Bonjour, {$name}, Bienvenue dans Smarty !
</note> </note>
<para> <para>
Maintenant passons <20> l'<27>dition du fichier 'index.php'. Nous allons Maintenant passons <20> l'<27>dition du fichier <filename>index.php</filename>. Nous allons
cr<63>er une instance de Smarty, <link linkend="api.assign">assigner</link> cr<63>er une instance de Smarty,
<link linkend="api.assign"><varname>assigner<varname></link>
une valeur <20> une variable de template et une valeur <20> une variable de template et
<link linkend="api.display">afficher</link> le r<>sultat avec 'index.tpl'. <link linkend="api.display">afficher</link> le r<>sultat avec <filename>index.tpl</filename>.
</para> </para>
<example> <example>
@@ -495,52 +500,54 @@ $smarty->display('index.tpl');
propre classe fille et de l'initialiser selon votre environnement. propre classe fille et de l'initialiser selon votre environnement.
De la sorte, nous n'aurons plus besoin de configurer <20> chaques fois les 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 chemins de notre environnement. Cr<43>ons un nouveau r<>pertoire
"/php/includes/livredor/" et un nouveau fichier appel<65> <filename>setup.php</filename>. <filename>/php/includes/livredor/</filename> et un nouveau fichier
Dans notre exemple d'environnement, "/php/includes" est notre appel<EFBFBD> <filename>setup.php</filename>.
Dans notre exemple d'environnement, <filename>/php/includes</filename> est notre
include_path PHP. Assurez-vous de faire la m<>me chose ou alors d'utiliser include_path PHP. Assurez-vous de faire la m<>me chose ou alors d'utiliser
des chemins absolus. des chemins absolus.
</para> </para>
<example> <example>
<title><EFBFBD>dition de /php/includes/livredor/setup.php</title> <title><EFBFBD>dition de /php/includes/livredor/setup.php</title>
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
// charge la librairie Smarty // charge la librairie Smarty
require('Smarty.class.php'); require('Smarty.class.php');
// le fichier setup.php est un bon // le fichier setup.php est un bon
// endroit pour charger les fichiers // endroit pour charger les fichiers
// de librairies de l'application et vous pouvez // de librairies de l'application et vous pouvez
// faire cel<65> juste ici. Par exemple : // faire cel<65> juste ici. Par exemple :
// require('livredor/livredor.lib.php'); // require('livredor/livredor.lib.php');
class Smarty_livredor extends Smarty { class Smarty_livredor extends Smarty {
function Smarty_livredor() { function Smarty_livredor() {
// Constructeur de la classe. // Constructeur de la classe.
// Appel<65> automatiquement <20> l'instanciation de la classe. // Appel<65> automatiquement <20> l'instanciation de la classe.
$this->Smarty(); $this->Smarty();
$this->template_dir = '/web/www.example.com/smarty/livredor/templates/'; $this->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$this->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/'; $this->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$this->config_dir = '/web/www.example.com/smarty/livredor/configs/'; $this->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$this->cache_dir = '/web/www.example.com/smarty/livredor/cache/'; $this->cache_dir = '/web/www.example.com/smarty/livredor/cache/';
$this->caching = true; $this->caching = true;
$this->assign('app_name', 'Guest Book'); $this->assign('app_name', 'Guest Book');
} }
} }
?> ?>
]]> ]]>
</programlisting> </programlisting>
</example> </example>
<para> <para>
Modifions maintenant le fichier 'index.php' pour qu'il utilise 'setup.php' Modifions maintenant le fichier <filename>index.php</filename> pour qu'il utilise
<filename>setup.php</filename>
</para> </para>
<example> <example>
@@ -548,13 +555,13 @@ $smarty->display('index.tpl');
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
require('livredor/setup.php'); require('livredor/setup.php');
$smarty = new Smarty_livredor; $smarty = new Smarty_livredor();
$smarty->assign('name','Ned'); $smarty->assign('name','Ned');
$smarty->display('index.tpl'); $smarty->display('index.tpl');
?> ?>
]]> ]]>
@@ -563,8 +570,8 @@ $smarty->display('index.tpl');
<para> <para>
Vous savez maintenant qu'il est facile de cr<63>er une instance de Smarty, Vous savez maintenant qu'il est facile de cr<63>er une instance de Smarty,
correctement configur<75>e, en utilisant Smarty_livredor qui initialise correctement configur<75>e, en utilisant <literal>Smarty_livredor()</literal>
automatiquement tout ce qu'il faut pour votre application. qui initialise automatiquement tout ce qu'il faut pour votre application.
</para> </para>
</sect1> </sect1>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.5 Maintainer: yannick Status: ready --> <!-- EN-Revision: 1.6 Maintainer: yannick Status: ready -->
<!ENTITY note.parameter.merge '<note> <!ENTITY note.parameter.merge '<note>
<title>Note technique</title> <title>Note technique</title>
@@ -20,10 +20,33 @@ C&#39;est au cas o
m<EFBFBD>me template, par exemple, pour avoir des templates compil<69>s m<EFBFBD>me template, par exemple, pour avoir des templates compil<69>s
pour diff<66>rents langages. Une autre utilit<69> pour l&#39;identifiant de compilation pour diff<66>rents langages. Une autre utilit<69> pour l&#39;identifiant de compilation
<parameter>$compile_id</parameter> est lorsque vous utilisez plus d&#39;un <parameter>$compile_id</parameter> est lorsque vous utilisez plus d&#39;un
<link linkend="variable.template.dir">$template_dir</link> mais <link linkend="variable.template.dir"><parameter>$template_dir</parameter></link> mais
seulement un <link linkend="variable.compile.dir">$compile_dir</link>. seulement un <link linkend="variable.compile.dir"><parameter>$compile_dir</parameter></link>.
D<EFBFBD>finissez un <parameter>$compile_id</parameter> D<EFBFBD>finissez un <parameter>$compile_id</parameter>
s<EFBFBD>par<EFBFBD> pour chaque <link linkend="variable.template.dir">$template_dir</link>, s<EFBFBD>par<EFBFBD> pour chaque
<link linkend="variable.template.dir"><parameter>$template_dir</parameter></link>,
sinon, les templates du m<>me nom s&#39;effaceront. Vous pouvez <20>galement sinon, les templates du m<>me nom s&#39;effaceront. Vous pouvez <20>galement
d<EFBFBD>finir la variable <link linkend="variable.compile.id">$compile_id</link> une seule d<EFBFBD>finir la variable <link linkend="variable.compile.id">$compile_id</link> une seule
fois plut<75>t que de la passer <20> chaque appel <20> la fonction.</para>'> fois plut<75>t que de la passer <20> chaque appel <20> la fonction.</para>'>
<!ENTITY api.register.snippet '<para>
La fonction PHP de callback <parameter>function</parameter> peut <20>tre soit :
<itemizedlist>
<listitem><para>
Une cha<68>ne de caract<63>res contenant la fonction <parameter>name</parameter>
</para></listitem>
<listitem><para>
Un tableau sous la forme <literal>array(&amp;$object, $method)</literal> o<>
<literal>&amp;$object</literal> est une r<>f<EFBFBD>rence d&#39;objet et
<literal>$method</literal> une cha<68>ne contenant le nom de la m<>thode
</para></listitem>
<listitem><para>
Un tableau sous la forme
<literal>array(&amp;$class, $method)</literal> o<>
<literal>$class</literal> est le nom de la classe et
<literal>$method</literal> est une m<>thode de la classe.
</para></listitem>
</itemizedlist>
</para>'>