commit german 2.5.0 docs

This commit is contained in:
mohrt
2003-04-17 14:50:49 +00:00
parent de2316c91c
commit 5eff9c73e5
6 changed files with 864 additions and 169 deletions

View File

@@ -1,7 +1,7 @@
<!-- Smarty German Documentation Port --> <!-- Smarty German Documentation Port -->
<!-- designers.sgml,v 1.7 2003/01/10 15:52:52 dexxter Exp --> <!-- $Id$ -->
<!-- dexxter --> <!-- $Author$ -->
<!-- 1.7 --> <!-- $Version$ -->
<part id="smarty.for.designers"> <part id="smarty.for.designers">
<title>Smarty f&uuml;r Template Designer</title> <title>Smarty f&uuml;r Template Designer</title>
@@ -111,6 +111,36 @@
</example> </example>
</sect1> </sect1>
<sect1 id="language.syntax.quotes">
<title>Variablen in doppelten Anf&uuml;hrungszeichen</title>
<para>
Smarty will recognize assigned variables embedded in double quotes so long
as the variables contain only numbers, letters, underscores and brackets
[]. With any other characters (period, object reference, etc.) the variable
must be surrounded by backticks.
Smarty erkennt zugewisene Variablen in doppelten Anf&uuml;hrungszeichen solange
der Variablenname nur Zahlen, Buchstaben, Unterstriche oder Klammern [] enthaelt.
Wenn andere Zeichen (punkte, objekt referenzen, etc) verwendet werden, so muss
die Variable mit Backticks versehen werden.
</para>
<example>
<title>Anf&uuml;hrungszeichen Syntax</title>
<programlisting>
Syntax Beispiele:
{func var="test $foo test"} &lt;-- sieht $foo
{func var="test $foo_bar test"} &lt;-- sieht $foo_bar
{func var="test $foo[0] test"} &lt;-- sieht $foo[0]
{func var="test $foo[bar] test"} &lt;-- sieht $foo[bar]
{func var="test $foo.bar test"} &lt;-- sieht $foo (not $foo.bar)
{func var="test `$foo.bar` test"} &lt;-- sieht $foo.bar
Anwendungsbeispiele:
{include file="subdir/$tpl_name.tpl"} &lt;-- $tpl_name wird durch den Wert ersetzt
{cycle values="one,two,`$smarty.config.myval`"} &lt;-- muss Backticks enthalten</programlisting>
</example>
</sect1>
</chapter> </chapter>
<chapter id="language.variables"> <chapter id="language.variables">
@@ -216,12 +246,25 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
<title>Verwendung von Variablen aus Konfigurationsdateien</title> <title>Verwendung von Variablen aus Konfigurationsdateien</title>
<para> <para>
Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit
umschliessenden '#'-Zeichen (Raute). umschliessenden '#'-Zeichen (Raute), oder der Smarty Variable <link linkend="language.variables.smarty.config">$smarty.config</link>.
Die zweite Syntax ist sinnvoll, wenn Werte in Variablen mit Anf<6E>hrungszeichen geladen werden sollen.
</para> </para>
<example> <example>
<title>Konfigurationsvariablen</title> <title>Konfigurationsvariablen</title>
<programlisting> <programlisting>
foo.conf:
seitenTitel = "This is mine"
bodyHintergrundFarbe = "#eeeeee"
tabelleRahmenBreite = "3"
tabelleHintergrundFarbe = "#bbbbbb"
reiheHintergrundFarbe = "#cccccc"
index.tpl:
{config_load file="foo.conf"}
&lt;html&gt; &lt;html&gt;
&lt;title&gt;{#seitenTitel#}&lt;/title&gt; &lt;title&gt;{#seitenTitel#}&lt;/title&gt;
&lt;body bgcolor="{#bodyHintergrundFarbe#}"&gt; &lt;body bgcolor="{#bodyHintergrundFarbe#}"&gt;
@@ -233,7 +276,42 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
&lt;/tr&gt; &lt;/tr&gt;
&lt;/table&gt; &lt;/table&gt;
&lt;/body&gt; &lt;/body&gt;
&lt;/html&gt;</programlisting> &lt;/html&gt;
AUSGABE:
&lt;html&gt;
&lt;title&gt;This is mine&lt;/title&gt;
&lt;body bgcolor="#eeeeee"&gt;
&lt;table border="3" bgcolor="#bbbbbb"&gt;
&lt;tr bgcolor="#cccccc"&gt;
&lt;td&gt;Vornamen&lt;/td&gt;
&lt;td&gt;Nachnamen&lt;/td&gt;
&lt;td&gt;Adresse&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
index.tpl: (alternate syntax)
{config_load file="foo.conf"}
&lt;html&gt;
&lt;title&gt;{$smarty.config.seitenTitel}&lt;/title&gt;
&lt;body bgcolor="{$smarty.config.bodyHintergrundFarbe}"&gt;
&lt;table border="{$smarty.config.tabelleRahmenBreite}" bgcolor="{$smarty.config.tabelleHintergrundFarbe}"&gt;
&lt;tr bgcolor="{$smarty.config.reiheHintergrundFarbe}"&gt;
&lt;td&gt;Vornamen&lt;/td&gt;
&lt;td&gt;Nachnamen&lt;/td&gt;
&lt;td&gt;Adresse&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
AUSGABE: (gleich, f&uuml;r beide Beispiele)
</programlisting>
</example> </example>
<para> <para>
Variablen aus Konfigurationsdateien k&ouml;nnen erst verwendet werden, Variablen aus Konfigurationsdateien k&ouml;nnen erst verwendet werden,
@@ -309,6 +387,16 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
</para> </para>
</sect2> </sect2>
<sect2 id="language.variables.smarty.config">
<title>{$smarty.config}</title>
<para>
{$smarty} kann verwendet werden um auf geladenen Konfigurationsdateien zu referenzieren.
{$smarty.config.foo} ist ein Synonym f&uuml;r {#foo#}. Konsultieren Sie den Abschnitt
<link linkend="language.function.config.load">config_load</link> f&uuml;r ein Beispiel.
</para>
</sect2>
<sect2 id="language.variables.smarty.loops"> <sect2 id="language.variables.smarty.loops">
<title>{$smarty.section}, {$smarty.foreach}</title> <title>{$smarty.section}, {$smarty.foreach}</title>
<para> <para>
@@ -389,6 +477,57 @@ AUSGABE:
72</programlisting> 72</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.modifier.cat">
<title>cat</title>
<informaltable frame=all>
<tgroup cols=5>
<colspec colname=param align=center>
<colspec colname=type align=center>
<colspec colname=required align=center>
<colspec colname=cat align=center>
<colspec colname=desc>
<thead>
<row>
<entry>Parameter Position</entry>
<entry>Typ</entry>
<entry>Erforderlich</entry>
<entry>cat</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>1</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>H&auml;ngt den &uuml;bergebenen Wert der Variable an.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Dieser Wert wird der Variable angeh&auml;ngt.
</para>
<example>
<title>cat</title>
<programlisting>
index.php:
$smarty = new Smarty;
$smarty-&gt;assign('articleTitle', 'Psychics predict world didn't end');
$smarty-&gt;display('index.tpl');
index.tpl:
{$articleTitle|cat:" yesterday."}
AUSGABE:
Psychics predict world didn't end yesterday.</programlisting>
</example>
</sect1>
<sect1 id="language.modifier.count.paragraphs"> <sect1 id="language.modifier.count.paragraphs">
<title>count_paragraphs (Abs&auml;tze z&auml;hlen)</title> <title>count_paragraphs (Abs&auml;tze z&auml;hlen)</title>
<para> <para>
@@ -788,6 +927,30 @@ AUSGABE:
In Kalifornien wurde ein Hund in das W&auml;hlerverzeichnis eingetragen. In Kalifornien wurde ein Hund in das W&auml;hlerverzeichnis eingetragen.
in kalifornien wurde ein hund in das w&auml;hlerverzeichnis eingetragen.</programlisting> in kalifornien wurde ein hund in das w&auml;hlerverzeichnis eingetragen.</programlisting>
</example>
</sect1>
<sect1 id="language.modifier.nl2br">
<title>nl2br</title>
<para>
Konvertiert alle Zeilenschaltungen in der Variable in &lt;br /&gt; Tags.
Verh&auml;lt sich gleich wie die PHP Funktion 'nl2br()'.
</para>
<example>
<title>nl2br</title>
<programlisting>
index.php:
$smarty = new Smarty;
$smarty-&gt;assign('articleTitle', "Sun or rain expected\ntoday, dark tonight");
$smarty-&gt;display('index.tpl');
index.tpl:
{$articleTitle|nl2br}
AUSGABE:
Sun or rain expected&lt;br /&gt;today, dark tonight</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.modifier.regex.replace"> <sect1 id="language.modifier.regex.replace">
@@ -2851,16 +3014,23 @@ AUSGABE:
<programlisting> <programlisting>
{* initialisieren *} {* initialisieren *}
{cycle values="#eeeeee,#d0d0d0"} {section name=rows loop=$data}
{cycle} &lt;tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"&gt;
{cycle} &lt;td&gt;{$data[rows]}&lt;/td&gt;
&lt;/tr&gt;
{/section}
AUSGABE: AUSGABE:
&lt;tr bgcolor="#eeeeee"&gt;
#eeeeee &lt;td&gt;1&lt;/td&gt;
#d0d0d0 &lt;/tr&gt;
#eeeeee</programlisting> &lt;tr bgcolor="#d0d0d0"&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr bgcolor="#eeeeee"&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.function.debug"> <sect1 id="language.function.debug">
@@ -3077,6 +3247,231 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
{if $weather ne ""} {if $weather ne ""}
&lt;b&gt;{$weather}&lt;/b&gt; &lt;b&gt;{$weather}&lt;/b&gt;
{/if}</programlisting> {/if}</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.checkboxes">
<title>html_checkboxes</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>Attribut Name</entry>
<entry>Typ</entry>
<entry>Erforderlich</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>checkbox</emphasis></entry>
<entry>Name der checkbox-Liste</entry>
</row>
<row>
<entry>werte</entry>
<entry>array</entry>
<entry>Ja, ausser wenn das option-Attribut verwendet wird</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Ein Array mit Werten f&uuml;r die checkbox-Liste</entry>
</row>
<row>
<entry>ausgabe</entry>
<entry>array</entry>
<entry>Ja, ausser wenn das option-Attribut verwendet wird</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Ein Array mit Ausgaben/Namen f&uuml;r die checkbox-Liste</entry>
</row>
<row>
<entry>checked</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Das ausgew&auml;hlte option-Element</entry>
</row>
<row>
<entry>options</entry>
<entry>associative array</entry>
<entry>Ja, ausser wert/ausgabe wird verwendet</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Assoziatives Array mit Wert/Ausgabe Paaren</entry>
</row>
<row>
<entry>separator</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Zeichenkette die zwischen den checkboxes ausgegeben werden soll</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_checkboxes generiert HTML-Checkboxes mit den &Uuml;bergebenen Werten.
K&uuml;mmert sich auch darum welches option-Element ausgew&auml;hlt sein soll.
Erforderliche Attribute sind Werte/Ausgabe ausser wenn options verwendet wird.
Die Ausgabe ist XHTML kompatibel.
</para>
<para>
Alle weiteren Parameter, die in der obigen Liste nicht erw&auml;hnt werden,
werden als &lt;input&gt;-Tags ausgegeben.
</para>
<example>
<title>html_checkboxes</title>
<programlisting>
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('cust_ids', array(1000,1001,1002,1003));
$smarty-&gt;assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','CHarlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="&lt;br /&gt;"}
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('cust_checkboxes', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson','Carlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_checkboxes name="id" checkboxes=$cust_checkboxes checked=$customer_id separator="&lt;br /&gt;"}
AUSGABE: (Beide Beispiele)
&lt;input type="checkbox" name="id[]" value="1000"&gt;Joe Schmoe&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1001" checked="checked"&gt;&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1002"&gt;Jane Johnson&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1003"&gt;Charlie Brown&lt;br /&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.image">
<title>html_image</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>Attribut Name</entry>
<entry>Typ</entry>
<entry>Erforderlich</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>file</entry>
<entry>string</entry>
<entry>Ja</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Name/Pfad zum Bild</entry>
</row>
<row>
<entry>border</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>0</emphasis></entry>
<entry>Gr&ouml;sse des Rahmens</entry>
</row>
<row>
<entry>height</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>Bildh&ouml;he</emphasis></entry>
<entry>Darstellungsh&ouml;he</entry>
</row>
<row>
<entry>width</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>Bildbreite</emphasis></entry>
<entry>Darstellungsbreite</entry>
</row>
<row>
<entry>basedir</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>DocumentRoot des Webservers</emphasis></entry>
<entry>Verzeichnis auf das relative Pfade aufgebaut werden sollen</entry>
</row>
<row>
<entry>link</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>href-Ziel auf das das Bild verweisen soll</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
'html_image' generiert ein HTML-Tag f&uml;r ein Bild. H&ouml;he und Breite
werden berechnet falls sie nicht &uml;bergeben werden.
</para>
<para>
'basedir' definiert das Verzeichnis auf welchen relative Pfade aufgebaut
werden sollen. Falls nicht &uml;bergeben, wird die Umgebungsvariable
DOCUMENT_ROOT verwendet. Wenn Sicherheit eingeschaltet ist, muss der
Pfad in einem sicheren Verzeichnis sein.
</para>
<para>
Wenn 'link' &uuml;bergeben wird, wird um das Bild ein &lt;a href="LINKVALUE"&gt;&lt;a&gt;
Tag eingef&uuml;hgt.
</para>
<note>
<title>Technische Bemerkung</title>
<para>
'html_image' verursacht Festplattenzugriffe um die Breite/H&ouml;he des Bildes
zu berechnen. Falls Sie 'caching' einsetzen, ist es zu empfehlen, 'html_image'
nicht zu verwenden, und stattdessen statische image Tags zu verwenden.
</para>
</note>
<example>
<title>html_image</title>
<programlisting>
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;display('index.tpl');
index.tpl:
{image file="pumpkin.jpg"}
{image file="/pfad/aus/docroot/pumpkin.jpg"}
{image file="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg"}
AUSGABE: (m&ouml;glich)
&lt;img src="pumpkin.jpg" border="0" width="44" height="68"&gt;
&lt;img src="/pfad/aus/docroot/pumpkin.jpg" border="0" width="44" height="68"&gt;
&lt;img src="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg" border="0" width="44" height="68"&gt;</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.function.html.options"> <sect1 id="language.function.html.options">
@@ -3117,7 +3512,7 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
<entry>string</entry> <entry>string</entry>
<entry>Nein</entry> <entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry> <entry><emphasis>empty</emphasis></entry>
<entry>Das ausgew&auml;hlte Array Element.</entry> <entry>Das ausgew&auml;hlte Option Element.</entry>
</row> </row>
<row> <row>
<entry>options</entry> <entry>options</entry>
@@ -3126,6 +3521,13 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
<entry><emphasis>n/a</emphasis></entry> <entry><emphasis>n/a</emphasis></entry>
<entry>Assoziatives Array mit Werten die ausgegeben werden sollen.</entry> <entry>Assoziatives Array mit Werten die ausgegeben werden sollen.</entry>
</row> </row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Name der select-Gruppe</entry>
</row>
</tbody> </tbody>
</tgroup> </tgroup>
</informaltable> </informaltable>
@@ -3133,39 +3535,192 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
'html_options' wird verwendet um HTML-Options Listen mit den &uuml;bergebenen Daten 'html_options' wird verwendet um HTML-Options Listen mit den &uuml;bergebenen Daten
zu erzeugen. Die Funktion k&uuml;mmert sich ebenfalls um das setzen des ausgew&auml;hlten zu erzeugen. Die Funktion k&uuml;mmert sich ebenfalls um das setzen des ausgew&auml;hlten
Standardwertes. Die Attribute 'values' und 'output' sind erforderlich, Standardwertes. Die Attribute 'values' und 'output' sind erforderlich,
ausser man verwendet das Attribut 'options'. Wenn ein Wert als Array erkannt wird, ausser man verwendet das Attribut 'options'.
</para>
<para>
Wenn ein Wert als Array erkannt wird,
wird er als HTML-OPTGROUP ausgegeben und die Werte werden in Gruppen dargestellt. wird er als HTML-OPTGROUP ausgegeben und die Werte werden in Gruppen dargestellt.
Rekursion wird unterst&uuml;tzt. Die Ausgabe ist XHTML kompatibel. Rekursion wird unterst&uuml;tzt. Die Ausgabe ist XHTML kompatibel.
</para> </para>
<para>
Wenn das optionale <emphasis>name</emphasis> Attribut &uuml;bergeben wird,
umschliesst ein &lt;select name="groupname"&gt;&lt;/select&gt; Tag die 'options'-Liste.
Sonst wird nur die 'options'-Liste generiert.
</para>
<para>
All parameters that are not in the list above are printed as
name/value-pairs inside the &lt;select&gt;-tag. They are ignored if
the optional <emphasis>name</emphasis> is not given.
Alle weiteren Parameter werden innerhalb des &lt;select&gt;-Tags
als wert/ausgabe-Paare &uuml;bergeben. Falls <emphasis>name</emphasis>
nicht &uuml;bergeben wird, werden die Werte ignoriert.
</para>
<example> <example>
<title>html_options</title> <title>html_options</title>
<programlisting> <programlisting>
{* nehmen Sie an, dass $cust_ids und $cust_names Arrays mit Werten sind, index.php:
w&auml;hrend $customer_id auch leer sein kann *}
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('cust_ids', array(1000,1001,1002,1003));
$smarty-&gt;assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Carlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
&lt;select name=customer_id&gt; &lt;select name=customer_id&gt;
{html_options values=$cust_ids selected=$customer_id output=$cust_names} {html_options values=$cust_ids selected=$customer_id output=$cust_names}
&lt;/select&gt; &lt;/select&gt;
index.php:
{* alternativ k&ouml;nnen die Werte aus 'values' und 'output' als assoziative Arrays require('Smarty.php.class');
an 'options' &uuml;bergeben werden. $customer_options ist in diesem Beispiel ein assoziatives Array *} $smarty = new Smarty;
$smarty-&gt;assign('cust_options', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson',
1004 =&gt; 'Charlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
&lt;select name=customer_id&gt; &lt;select name=customer_id&gt;
{html_options options=$customer_options selected=$customer_id} {html_options options=$cust_options selected=$customer_id}
&lt;/select&gt; &lt;/select&gt;
AUSGABE: AUSGABE (beide Beispiele):
&lt;select name=customer_id&gt; &lt;select name=customer_id&gt;
&lt;option value="1000">Joe Schmoe&lt;/option&gt; &lt;option value="1000"&gt;Joe Schmoe&lt;/option&gt;
&lt;option value="1001" selected="selected">Jack Smith&lt;/option&gt; &lt;option value="1001" selected="selected"&gt;Jack Smith&lt;/option&gt;
&lt;option value="1002">Jane Johnson&lt;/option&gt; &lt;option value="1002"&gt;Jane Johnson&lt;/option&gt;
&lt;option value="1003">Charlie Brown&lt;/option&gt; &lt;option value="1003"&gt;Charlie Brown&lt;/option&gt;
&lt;/select&gt;</programlisting> &lt;/select&gt;</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.function.html.radios">
<title>html_radios</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>Attribut Name</entry>
<entry>Typ</entry>
<entry>Erforderlich</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>radio</emphasis></entry>
<entry>name der radio-Liste</entry>
</row>
<row>
<entry>values</entry>
<entry>array</entry>
<entry>Ja, ausser wenn das 'options'-Attribut verwendet wird</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Ein Array mit Werten f&uuml;r die radio-Liste</entry>
</row>
<row>
<entry>output</entry>
<entry>array</entry>
<entry>Ja, ausser wenn das 'options'-Attribut verwendet wird</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Ein Array mit Namen f&uuml;r die radio-Liste</entry>
</row>
<row>
<entry>checked</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Das ausgew&auml;hlte checkbox-Element</entry>
</row>
<row>
<entry>options</entry>
<entry>associative array</entry>
<entry>Ja, ausser wenn die Attribute 'values' und 'output' verwendet werden</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Ein assoziatves Array mit wert/ausgabe Paaren</entry>
</row>
<row>
<entry>separator</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Zeichenkette die zwischen den radio-Elementen eingef&uuml;gt werden soll.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
'html_radios' generiert eine Liste mit radio-Elementen aus den &uuml;bergebenen Daten.
Es k&uuml;mmert sich ebenfalls darum, welches Element ausgew&auml;hlt sein soll. Erforderliche
Attribute sind 'values'/'output', ausser wenn 'options' verwendet wird. Die Ausgabe ist XHTML kompatibel.
</para>
<para>
Alle weiteren Parameter werden als &lt;input&gt;-Tags ausgegeben.
</para>
<example>
<title>html_radios</title>
<programlisting>
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('cust_ids', array(1000,1001,1002,1003));
$smarty-&gt;assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Carlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="&lt;br /&gt;"}
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('cust_radios', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson',
1004 =&gt; 'Charlie Brown'));
$smarty-&gt;assign('customer_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_radios name="id" radios=$cust_radios checked=$customer_id separator="&lt;br /&gt;"}
AUSGABE: (beide Beispiele)
&lt;input type="radio" name="id[]" value="1000"&gt;Joe Schmoe&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1001" checked="checked"&gt;&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1002"&gt;Jane Johnson&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1003"&gt;Charlie Brown&lt;br /&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.select.date"> <sect1 id="language.function.html.select.date">
<title>html_select_date (Ausgabe von Daten als HTML-'options')</title> <title>html_select_date (Ausgabe von Daten als HTML-'options')</title>
<informaltable frame=all> <informaltable frame=all>
@@ -3737,6 +4292,115 @@ AUSGABE:
&lt;option value="am" selected&gt;AM&lt;/option&gt; &lt;option value="am" selected&gt;AM&lt;/option&gt;
&lt;option value="pm"&gt;PM&lt;/option&gt; &lt;option value="pm"&gt;PM&lt;/option&gt;
&lt;/select&gt;</programlisting> &lt;/select&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.table">
<title>html_table</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>Attribut Name</entry>
<entry>Typ</entry>
<entry>Erforderlich</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>loop</entry>
<entry>array</entry>
<entry>Ja</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Array mit den Daten durch die gelooped werden soll.</entry>
</row>
<row>
<entry>cols</entry>
<entry>integer</entry>
<entry>Nein</entry>
<entry><emphasis>3</emphasis></entry>
<entry>Anzahl Spalten in der Tabelle</entry>
</row>
<row>
<entry>table_attr</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>border="1"</emphasis></entry>
<entry>Attribute f&uuml;r table-Tag</entry>
</row>
<row>
<entry>tr_attr</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Attribute f&uuml;r tr-Tags (Arrays werden durchlaufen)</entry>
</row>
<row>
<entry>td_attr</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Attribute f&uuml;r td-Tags (Arrays werden durchlaufen)</entry>
</row>
<row>
<entry>trailpad</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>&amp;nbsp;</emphasis></entry>
<entry>Werte um leere Zellen auszuf&uuml;llen</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<emphasis>html_table</emphasis> generiert eine Tabelle aus dem
&uuml;bergebenen Array. Das <emphasis>cols</emphasis> Attribut
definiert die Anzahl Spalten die generiert werden sollen. <emphasis>table_attr</emphasis>, <emphasis>tr_attr</emphasis>
und <emphasis>td_attr</emphasis> definiert die Werte die den entsprechenden HTML-Tags als Attribute angeh&auml;ngt werden.
Wenn <emphasis>tr_attr</emphasis> oder <emphasis>td_attr</emphasis> Arrays sind, werden diese durchlaufen.
<emphasis>trailpad</emphasis> definiert den Wert der in leere Zellen eingef&uuml;gt werden soll.
</para>
<example>
<title>html_table</title>
<programlisting>
index.php:
require('Smarty.php.class');
$smarty = new Smarty;
$smarty-&gt;assign('data',array(1,2,3,4,5,6,7,8,9));
$smarty-&gt;assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"'));
$smarty-&gt;display('index.tpl');
index.tpl:
{html_table loop=$data}
{html_table loop=$data cols=4 table_attrs='border="0"'}
{html_table loop=$data cols=4 tr_attrs=$tr}
AUSGABE:
&lt;table border="1"&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table border="0"&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table border="1"&gt;
&lt;tr bgcolor="#eeeeee"&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor="#dddddd"&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor="#eeeeee"&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="language.function.math"> <sect1 id="language.function.math">

View File

@@ -72,36 +72,11 @@
<sect1 id="installing.smarty.basic"> <sect1 id="installing.smarty.basic">
<title>Basis Installation</title> <title>Basis Installation</title>
<note>
<title>Technische Bemerkung</title>
<para> <para>
Dieser Leitfaden geht davon aus, dass Sie Ihr Webserver- und PHP-Setup kennen Installieren Sie die Smarty Library Dateien aus dem /libs/ Verzeichnis
und mit den Namenskonventionen f&uuml;r Dateien und Verzeichnisse Ihres Betriebssystems der Distribution. Diese PHP Dateien sollten NICHT angepasst werden. Sie
vertraut sind. Im Folgenden wird ein Unix-Dateisystem verwendet, stellen Sie also werden zwischen den verschieden Applikationen die Smarty verwenden geteilt.
sicher, dass sie die f&uuml;r Ihr Betriebssystem n&ouml;tigen &Auml;nderungen vornehmen. Diese Dateien werden bei einem upgrade ersetzt.
</para>
<para>
Das Beispiel geht davon aus, dass '/php/includes' in Ihrem PHP-'include_path'
liegt. Konsultieren Sie das PHP-Manual f&uuml;r weiterf&uuml;hrende Informationen hierzu.
</para>
</note>
<para>
Installieren Sie als erstes die Smarty-Library Dateien. Diese Dateien
sollten von Ihnen NICHT editiert und von allen Applikationen
verwendet werden. Sie werden nur erneuert, wenn Sie eine neue Version von Smarty installieren.
</para>
<note>
<title>Technische Bemerkung</title>
<para>
Wir empfehlen keine &Auml;nderungen an den Smarty-Library Dateien vorzunehmen.
Dies macht ein m&ouml;gliches Upgrade wesentlich einfacher. Sie m&uuml;ssen
diese Dateien auch nicht anpassen, um Smarty zu konfigurieren! Benutzen Sie f<>r
diesen Zwecke eine Instanz der Smarty-Klasse.
</para>
</note>
<para>
Folgende Library Dateien werden mit Smarty geliefert und werden ben&ouml;tigt:
</para> </para>
<example> <example>
<title>Smarty-Library Dateiliste</title> <title>Smarty-Library Dateiliste</title>
@@ -114,10 +89,12 @@ debug.tpl
</example> </example>
<para> <para>
Sie k&ouml;nnen diese Dateien entweder in Ihrem PHP-'include_path' oder Smarty verwendet eine PHP Konstante namens <link linkend="constant.smarty.dir">SMARTY_DIR</link>
auch in irgend einem anderen Verzeichnis ablegen, solange die Konstante die den Systempfad zu den Library Dateien enth&auml;lt. Wenn Ihre Applikation keine
<link linkend="constant.smarty.dir">SMARTY_DIR</link> auf den korrekten Probleme hat die Library Dateien zu finden, m&uuml;ssen Sie diese Konstante nicht zuweisen,
Pfad zeigt. Im Folgenden werden Beispiele f&uuml;r beide F&auml;lle aufgezeigt. und Smarty wird alle ben&ouml;tigten Dateien finden. Falls <emphasis>Smarty.class.php</emphasis>
nicht in Ihrem 'include_path' ist und Sie nicht den absoluten Pfad angeben, m&uuml;ssen Sie
SMARTY_DIR manuell zuweisen. SMARTY_DIR <emphasis>must</emphasis> muss mit einem '/'-Zeichen (slash) enden.
</para> </para>
<para> <para>
So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript: So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript:
@@ -131,14 +108,28 @@ $smarty = new Smarty;</screen>
</example> </example>
<para> <para>
Wenn sich die Dateien ausserhalb des PHP-'include_path' befinden, Versuchen Sie das oben gezeigte Script auszuf&uuml;hren. Wenn Sie einen Fehler erhalten ('<emphasis>Smarty.class.php</emphasis> file could not be found'),
muss die Konstante <link linkend="constant.smarty.dir">SMARTY_DIR</link> m&uuml;ssen Sie wie folgt vorgehen:
auf den absoluten Pfad zeigen und mit einem '/' enden. Nehmen wir an,
die Library-Dateien befinden sich in '/usr/local/lib/php/Smarty/':
</para> </para>
<example> <example>
<title>Instanz von Smarty aus SMARTY_DIR erstellen:</title> <title>&Uuml;bergeben Sie den vollen Pfad</title>
<screen>
require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;</screen>
</example>
<example>
<title>F&uuml;gen Sie den Library Pfad Ihrem PHP-'include_path' hinzu</title>
<screen>
// Editieren Sie die php.ini Datei und f&uuml;gen Sie den Library Pfad Ihrem PHP-'include_path' hinzu
// Danach sollte folgendes funktionieren.
require('Smarty.class.php');
$smarty = new Smarty;</screen>
</example>
<example>
<title>Setzen Sie SMARTY_DIR manuell</title>
<screen> <screen>
define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php'); require(SMARTY_DIR.'Smarty.class.php');
@@ -147,43 +138,33 @@ $smarty = new Smarty;</screen>
<para> <para>
Jetzt, wo die Library Dateien an ihrem Platz sind, wird es Jetzt, wo die Library Dateien an ihrem Platz sind, wird es
Zeit, die Smarty Verzeichnisse zu erstellen. Zeit, die Smarty Verzeichnisse zu erstellen. Smarty ben&ouml;tigt 4 Verzeichnisse
welche (normerweise) <emphasis>templates</emphasis>, <emphasis>templates_c</emphasis>, <emphasis>configs</emphasis>
und <emphasis>cache</emphasis> heissen. Jedes kann jedoch &uuml;ber die
Smarty Attribute <emphasis>$template_dir</emphasis>, <emphasis>$compile_dir</emphasis>, <emphasis>$config_dir</emphasis>,
und <emphasis>$cache_dir</emphasis> definiert werden. Es wird empfohlen f&uuml;r jede Applikation die Smarty verwenden
soll eigene Verzeichnisse einzurichten.
</para> </para>
<para> <para>
F&uuml;r unser Beispiel werden wir die Smarty Umgebung f&uuml;r eine Stellen Sie sicher dass Sie die DocumentRoot Ihres Webservers kennen.
G&auml;stebuch-Applikation konfigurieren. Wir verwenden den Applikationsnamen In unserem Beispiel verwenden wir "/web/www.mydomain.com/docs/". Alle
nur, um die Verzeichnis-Struktur zu verdeutlichen. Sie k&ouml;nnen die selbe Smarty-Verzeichnisse werden immer nur von Smarty aufgerufen, nie vom Browser
Umgebung f&uuml;r alle Ihre Applikationen verwenden indem Sie 'guestbook' direkt. Deshalb wird empfohlen diese Verzeichnisse <emphasis>ausserhalb</emphasis>
durch dem Namen Ihrer Applikation ersetzen. der DocumentRoot einzurichten.
</para>
<para>
Stellen Sie sicher, dass Sie die DocumentRoot Ihres Webservers kennen.
In unserem Beispiel lautet sie '/web/www.domain.com/docs/'.
</para>
<para>
Die Smarty Verzeichnisse werden in den Klassen-Variablen $template_dir,
$compile_dir, $config_dir und $cache_dir definiert. Die Standardwerte sind:
"templates", "templates_c", "configs" und "cache". F&uuml;r unser Beispiel
legen wir alle diese Verzeichnisse unter '/web/www.domain.com/smarty/guestbook/' an.
</para> </para>
<note>
<title>Technische Bemerkung</title>
<para> <para>
Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen, F&uuml;r unser installations-Beispiel werden wir die Umgebung f&uuml;r eine
um m&ouml;gliche Direktzugriffe zu verhindern. G&auml;stebuchapplikation einrichten. Wir verwenden dies nur als Beispiel,
</para> falls Sie ihre eigene Applikationsumgebung einrichten, ersetzen sie '/guestbook/'
</note> einfach durch den Namen Ihrer eigener Applikation. Unsere Dateien werden unter
"/web/www.mydomain.com/smarty/guestbook/" abgelegt.
</para>
<para> <para>
In Ihrer DocumentRoot muss mindestens eine Datei liegen, die f&uuml;r Browser In Ihrer DocumentRoot muss mindestens eine Datei liegen, die f&uuml;r Browser
zug&auml;nglich ist. Wir nennen dieses Skript 'index.php', und legen zug&auml;nglich ist. Wir nennen dieses Skript 'index.php', und legen
es in das Verzeichnis '/guestbook/' in unserer DocumentRoot. es in das Verzeichnis '/guestbook/' in unserer DocumentRoot.
</para>
<note>
<title>Technische Bemerkung</title>
<para>
Bequem ist es, den Webserver so zu konfigurieren, dass 'index.php' als Bequem ist es, den Webserver so zu konfigurieren, dass 'index.php' als
Standard-Verzeichnis-Index verwendet wird. Somit kann man das Skript Standard-Verzeichnis-Index verwendet wird. Somit kann man das Skript
direkt mit 'http://www.domain.com/guestbook/' aufrufen. Falls Sie Apache direkt mit 'http://www.domain.com/guestbook/' aufrufen. Falls Sie Apache
@@ -191,7 +172,6 @@ $smarty = new Smarty;</screen>
als letzten Eintrag f&uuml;r DirectoryIndex verwenden. (Jeder Eintrag muss als letzten Eintrag f&uuml;r DirectoryIndex verwenden. (Jeder Eintrag muss
mit einem Leerzeichen abgetrennt werden). mit einem Leerzeichen abgetrennt werden).
</para> </para>
</note>
<para> <para>
Die Dateistruktur bis jetzt: Die Dateistruktur bis jetzt:
@@ -214,16 +194,6 @@ $smarty = new Smarty;</screen>
/web/www.mydomain.com/docs/guestbook/index.php</screen> /web/www.mydomain.com/docs/guestbook/index.php</screen>
</example> </example>
<note>
<title>Technische Bemerkung</title>
<para>
Falls Sie kein Caching und keine Konfigurationsdateien verwenden, ist es nicht
erforderlich die Verzeichnisse '$config_dir' und '$cache_dir' zu erstellen.
Es wird jedoch trotzdem empfohlen, da diese Funktionalit&auml;ten eventuell sp&auml;ter
genutzt werden sollen.
</para>
</note>
<para> <para>
Smarty ben&ouml;tigt Schreibzugriff auf die Verzeichnisse '$compile_dir' und '$cache_dir'. Smarty ben&ouml;tigt Schreibzugriff auf die Verzeichnisse '$compile_dir' und '$cache_dir'.
Stellen Sie also sicher, dass der Webserver-Benutzer (normalerweise Benutzer 'nobody' und Gruppe 'nogroup') Stellen Sie also sicher, dass der Webserver-Benutzer (normalerweise Benutzer 'nobody' und Gruppe 'nogroup')
@@ -282,14 +252,17 @@ Hallo, {$name}!</screen>
<para> <para>
Als n&auml;chstes editieren wir die Datei 'index.php'. Wir erzeugen eine Als n&auml;chstes editieren wir die Datei 'index.php'. Wir erzeugen eine
Smarty-Instanz, weisen dem Template eine Variable zu und geben 'index.tpl' aus. Smarty-Instanz, weisen dem Template eine Variable zu und geben 'index.tpl' aus.
In unserem Beispiel ist '/usr/local/lib/php/Smarty' in unserem PHP-'include_path',
stellen Sie sicher dass dies bei Ihrer Installation auch der Fall ist, oder
verwenden Sie ansonsten aboslute Pfade.
</para> </para>
<example> <example>
<title>Editieren von /web/www.mydomain.com/docs/guestbook/index.php</title> <title>Editieren von /web/www.mydomain.com/docs/guestbook/index.php</title>
<screen> <screen>
define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); // Smarty laden
require(SMARTY_DIR.'Smarty.class.php'); require('Smarty.class.php');
$smarty = new Smarty; $smarty = new Smarty;
@@ -333,7 +306,8 @@ $smarty->display('index.tpl');</screen>
eine eigene Smarty-Umgebung zu initialisieren. Anstatt immer wieder eine eigene Smarty-Umgebung zu initialisieren. Anstatt immer wieder
die Verzeichnisse zu definieren, kann diese Aufgabe auch in einer einzigen die Verzeichnisse zu definieren, kann diese Aufgabe auch in einer einzigen
Datei erledigt werden. Beginnen wir, indem wir ein neues Verzeichnis namens '/php/includes/guestbook/' Datei erledigt werden. Beginnen wir, indem wir ein neues Verzeichnis namens '/php/includes/guestbook/'
erstellen und eine Datei namens 'setup.php' darin anlegen. erstellen und eine Datei namens 'setup.php' darin anlegen. In unserem Beispiel ist '/php/includes'
im PHP-'include_path'. Stellen Sie sicher dass das auch bei Ihnen der Fall ist, oder benutzen Sie absolute Pfadnamen.
</para> </para>
<example> <example>
@@ -341,10 +315,9 @@ $smarty->display('index.tpl');</screen>
<screen> <screen>
// Smarty Library Dateien laden // Smarty Library Dateien laden
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php'); require(SMARTY_DIR.'Smarty.class.php');
// ein guter Platz um Applikations spezifische Libraries zu laden // steup.php ist auch ein guter Platz um Applikations spezifische Libraries zu laden
// require('guestbook/guestbook.lib.php'); // require('guestbook/guestbook.lib.php');
class Smarty_GuestBook extends Smarty { class Smarty_GuestBook extends Smarty {
@@ -368,18 +341,6 @@ class Smarty_GuestBook extends Smarty {
}</screen> }</screen>
</example> </example>
<note>
<title>Technische Bemerkung</title>
<para>
In unserem Beispiel werden die Library Dateien ausserhalb der DocumentRoot
abgelegt. Diese Dateien k&ouml;nnten sensitive Informationen enthalten,
die wir nicht zug&auml;nglich machen m&ouml;chten.
Deshalb legen wir alle Library Dateien in '/php/includes/guestbook/' ab
und laden sie in unserem 'setup.php' Skript, wie Sie im oben gezeigten
Beispiel sehen k&ouml;nnen.
</para>
</note>
<para> <para>
Nun passen wir 'index.php' an, um 'setup.php' zu verwenden: Nun passen wir 'index.php' an, um 'setup.php' zu verwenden:
</para> </para>

View File

@@ -30,7 +30,7 @@
</author> </author>
</authorgroup> </authorgroup>
<edition>Version 2.0</edition> <edition>Version 2.5</edition>
<copyright> <copyright>
<year>2001</year> <year>2001</year>
<year>2002</year> <year>2002</year>

View File

@@ -390,20 +390,6 @@
Normalerweise '}'. Normalerweise '}'.
</para> </para>
</sect1> </sect1>
<sect1 id="variable.show.info.header">
<title>$show_info_header</title>
<para>
Gibt am Anfang der HTML-Seite die Smarty Version und das Kompilier-Datum des Templates
als Kommentar aus. Normalerweise 'false'.
</para>
</sect1>
<sect1 id="variable.show.info.include">
<title>$show_info_include</title>
<para>
Gibt am Anfang und am Ende jedes eingebundenen Templates einen HTML-Kommentar aus.
Normalerweise 'false'.
</para>
</sect1>
<sect1 id="variable.compiler.class"> <sect1 id="variable.compiler.class">
<title>$compiler_class</title> <title>$compiler_class</title>
<para> <para>
@@ -461,12 +447,27 @@
<paramdef>string <parameter>varname</parameter></paramdef> <paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef> <paramdef>mixed <parameter>var</parameter></paramdef>
</funcprototype> </funcprototype>
<funcprototype>
<funcdef>void <function>append</function></funcdef>
<paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
<paramdef>boolean <parameter>merge</parameter></paramdef>
</funcprototype>
</funcsynopsis> </funcsynopsis>
<para> <para>
Wird verwendet, um an Template-Variablen weitere Daten anzuh&auml;ngen. Sie Wird verwendet, um an Template-Variablen weitere Daten anzuh&auml;ngen. Sie
k&ouml;nnen entweder ein Namen/Wert-Paar oder assoziative Arrays, k&ouml;nnen entweder ein Namen/Wert-Paar oder assoziative Arrays,
die mehrere Namen/Wert-Paare enthalten, &uuml;bergeben. die mehrere Namen/Wert-Paare enthalten, &uuml;bergeben. Wenn Sie als dritten Parameter
'true' &uuml;bergeben werden die beiden Arrays zusammengef&uuml;gt.
</para> </para>
<note>
<title>Technical Note</title>
<para>
Der Parameter 'merge' &uuml;berschreibt bestehende Schl&uuml;ssel, falls
im zweiten Array die selben Schl&uuml;ssel wie im ersten vorkommen.
Diese Funktion ist ungelich 'array_merge()' aus PHP.
</para>
</note>
<example> <example>
<title>append (anh&auml;ngen)</title> <title>append (anh&auml;ngen)</title>
<programlisting> <programlisting>
@@ -487,20 +488,27 @@
<paramdef>string <parameter>varname</parameter></paramdef> <paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef> <paramdef>mixed <parameter>var</parameter></paramdef>
</funcprototype> </funcprototype>
<funcprototype>
<funcdef>void <function>append_by_ref</function></funcdef>
<paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
<paramdef>boolean <parameter>merge</parameter></paramdef>
</funcprototype>
</funcsynopsis> </funcsynopsis>
<para> <para>
Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie
anzuh&auml;ngen. Konsultieren Sie das PHP-Manual zum Thema 'variable referencing' anzuh&auml;ngen. Wenn Sie eine Variable via Referenz anh&auml;ngen und sie nachtr&auml;glich
f&uuml;r weitere Erkl&auml;rungen. ge&auml;ndert wird, wird auch der angeh&auml;ngte Wert ge&auml;ndert. Bei Objekten kann so
das kopieren derselben vermieden werden. Konsultieren Sie das PHP-Manual betreffend Variablenreferenzierung
f&uuml;r weitere Erkl&auml;rungen. Wenn Sie als dritten Parameter 'true' &uuml;bergeben wird das anzuh&auml;ngende Array
mit dem bestehenden zusammengef&uml;gt.
</para> </para>
<note> <note>
<title>Technische Bemerkung</title> <title>Technische Bemerkung</title>
<para> <para>
'append_by_ref()' ist effizienter als 'append()', da keine Kopie der Variable Der Parameter 'merge' &uuml;berschreibt bestehende Schl&uuml;ssel, falls
erzeugt, sondern auf die Variable im Speicher referenziert wird. Beachten Sie im zweiten Array die selben Schl&uuml;ssel wie im ersten vorkommen.
dabei, dass eine nachtr&auml;gliche &auml;nderung Original-Variable auch die zugewiesene Variable Diese Funktion ist ungelich 'array_merge()' aus PHP.
&auml;ndert. PHP5 wird die Referenzierung automatisch &uuml;bernehmen, diese
Funktion dient als Workaround.
</para> </para>
</note> </note>
<example> <example>
@@ -559,11 +567,11 @@
<note> <note>
<title>Technical Note</title> <title>Technical Note</title>
<para> <para>
'assign_by_ref()' ist effizienter als 'assign()', da keine Kopie der Variable Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie
erzeugt wird, sondern auf die Variable im Speicher referenziert wird. Beachten Sie anzuh&auml;ngen. Wenn Sie eine Variable via Referenz anh&auml;ngen und sie nachtr&auml;glich
dabei, dass eine nachtr&auml;gliche &auml;nderung Original-Variable auch die zugewiesene Variable ge&auml;ndert wird, wird auch der angeh&auml;ngte Wert ge&auml;ndert. Bei Objekten kann so
&auml;ndert. PHP5 wird die Referenzierung automatisch &uuml;bernehmen, diese das kopieren derselben vermieden werden. Konsultieren Sie das PHP-Manual betreffend Variablenreferenzierung
Funktion dient als Workaround. f&uuml;r weitere Erkl&auml;rungen.
</para> </para>
</note> </note>
<example> <example>
@@ -845,27 +853,80 @@
echo $output;</programlisting> echo $output;</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="api.get.config.vars">
<title>get_config_vars</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_config_vars</function></funcdef>
<paramdef>string <parameter><optional>varname</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Gibt die definierte Variable aus einer Konfigurationsdatei zur&uuml;ck,
wenn kein Parameter &uuml;bergeben wird, wird ein Array aller Variablen
zur&uuml;ckgegeben.
</para>
<example>
<title>get_config_vars</title>
<programlisting>
// Vriable 'foo' aus Konfigurationsdatei lesen
$foo = $smarty->get_config_vars('foo');
// alle Variablen aus der Konfigurationsdatei lesen
$config_vars = $smarty->get_config_vars();
// ausgeben
print_r($config_vars);</programlisting>
</example>
</sect1>
<sect1 id="api.get.registered.object">
<title>get_registered_object</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_registered_object</function></funcdef>
<paramdef>string <parameter>object_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
This returns a reference to a registered object. This is useful
from within a custom function when you need direct access to a
registered object.
</para>
<example>
<title>get_registered_object</title>
<programlisting>
function smarty_block_foo($params, &amp;$smarty) {
if (isset[$params['object']]) {
// get reference to registered object
$obj_ref =&amp; $smarty->&amp;get_registered_object($params['object']);
// use $obj_ref is now a reference to the object
}
}</programlisting>
</example>
</sect1>
<sect1 id="api.get.template.vars"> <sect1 id="api.get.template.vars">
<title>get_template_vars (Template-Variablen extrahieren)</title> <title>get_template_vars (Template-Variablen extrahieren)</title>
<funcsynopsis> <funcsynopsis>
<funcprototype> <funcprototype>
<funcdef>array <function>get_template_vars</function></funcdef> <funcdef>array <function>get_template_vars</function></funcdef>
<paramdef><parameter></parameter></paramdef> <paramdef>string <parameter><optional>varname</optional></parameter></paramdef>
</funcprototype> </funcprototype>
</funcsynopsis> </funcsynopsis>
<para> <para>
Gibt ein Array der zugewiesenen Template-Variablen zur&uuml;ck. Gibt den Wert der &uuml;bergebenen Template-Variable zur&uuml;ck. Wenn kein Parameter
&uuml;bergeben wird, besteht die R&uuml;ckgabe aus einem Array aller zugewiesener Variablen.
</para> </para>
<example> <example>
<title>get_template_vars (Template-Variablen extrahieren)</title> <title>get_template_vars (Template-Variablen extrahieren)</title>
<programlisting> <programlisting>
// Template-Variable 'foo' extrahieren
$foo = $smarty->get_template_vars('foo');
// alle zugewiesenen Template-Variablen extrahieren // alle zugewiesenen Template-Variablen extrahieren
$tpl_vars = $smarty->get_template_vars(); $tpl_vars = $smarty->get_template_vars();
// Anschauen // Anschauen
var_dump($tpl_vars);</programlisting> print_r($tpl_vars);</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="api.is.cached"> <sect1 id="api.is.cached">

View File

@@ -122,16 +122,16 @@
<title>embedded quotes syntax</title> <title>embedded quotes syntax</title>
<programlisting> <programlisting>
SYNTAX EXAMPLES: SYNTAX EXAMPLES:
{func var="test $foo test"} &lt-- sees $foo {func var="test $foo test"} &lt;-- sees $foo
{func var="test $foo_bar test"} &lt-- sees $foo_bar {func var="test $foo_bar test"} &lt;-- sees $foo_bar
{func var="test $foo[0] test"} &lt-- sees $foo[0] {func var="test $foo[0] test"} &lt;-- sees $foo[0]
{func var="test $foo[bar] test"} &lt-- sees $foo[bar] {func var="test $foo[bar] test"} &lt;-- sees $foo[bar]
{func var="test $foo.bar test"} &lt-- sees $foo (not $foo.bar) {func var="test $foo.bar test"} &lt;-- sees $foo (not $foo.bar)
{func var="test `$foo.bar` test"} &lt-- sees $foo.bar {func var="test `$foo.bar` test"} &lt;-- sees $foo.bar
PRACTICAL EXAMPLES: PRACTICAL EXAMPLES:
{include file="subdir/$tpl_name.tpl"} &lt-- will replace $tpl_name with value {include file="subdir/$tpl_name.tpl"} &lt;-- will replace $tpl_name with value
{cycle values="one,two,`$smarty.config.myval`"} &lt-- must have backticks</programlisting> {cycle values="one,two,`$smarty.config.myval`"} &lt;-- must have backticks</programlisting>
</example> </example>
</sect1> </sect1>

View File

@@ -307,10 +307,19 @@ class Smarty_Compiler extends Smarty {
$template_compiled .= $text_blocks[$i]; $template_compiled .= $text_blocks[$i];
/* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */ /* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */
if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled, $match)) { if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled, $_match)) {
$strip_tags = $match[0]; $strip_tags = $_match[0];
$strip_tags_modified = preg_replace("!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", '', $strip_tags); $_strip_search = array(
$strip_tags_modified = preg_replace('![\r\n]+!m', '', $strip_tags_modified); '%([^\\\\]\?>)\n%', // remove newlines after PHP close tags
"!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", // remove leading/trailing space chars
'%[\r\n]+%m', // remove CRs and newlines
'%([^\\\\]\?>)%'); // replace newlines after PHP close tags
$_strip_replace = array(
'\\1',
'',
'',
'\\1' . "\n");
$strip_tags_modified = preg_replace($_strip_search, $_strip_replace, $strip_tags);
for ($i = 0, $for_max = count($strip_tags); $i < $for_max; $i++) for ($i = 0, $for_max = count($strip_tags); $i < $for_max; $i++)
$template_compiled = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s",
$this->quote_replace($strip_tags_modified[$i]), $this->quote_replace($strip_tags_modified[$i]),