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 -->
<!-- designers.sgml,v 1.7 2003/01/10 15:52:52 dexxter Exp -->
<!-- dexxter -->
<!-- 1.7 -->
<!-- $Id$ -->
<!-- $Author$ -->
<!-- $Version$ -->
<part id="smarty.for.designers">
<title>Smarty f&uuml;r Template Designer</title>
@@ -111,6 +111,36 @@
</example>
</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 id="language.variables">
@@ -215,13 +245,26 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
<sect1 id="language.config.variables">
<title>Verwendung von Variablen aus Konfigurationsdateien</title>
<para>
Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit
umschliessenden '#'-Zeichen (Raute).
Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit
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>
<example>
<title>Konfigurationsvariablen</title>
<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;title&gt;{#seitenTitel#}&lt;/title&gt;
&lt;body bgcolor="{#bodyHintergrundFarbe#}"&gt;
@@ -233,7 +276,42 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
&lt;/tr&gt;
&lt;/table&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>
<para>
Variablen aus Konfigurationsdateien k&ouml;nnen erst verwendet werden,
@@ -309,6 +387,16 @@ email: zaphod@slartibartfast.com&lt;br&gt;</programlisting>
</para>
</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">
<title>{$smarty.section}, {$smarty.foreach}</title>
<para>
@@ -389,6 +477,57 @@ AUSGABE:
72</programlisting>
</example>
</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">
<title>count_paragraphs (Abs&auml;tze z&auml;hlen)</title>
<para>
@@ -790,6 +929,30 @@ In Kalifornien wurde ein Hund in das W&auml;hlerverzeichnis eingetragen.
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>
</sect1>
<sect1 id="language.modifier.regex.replace">
<title>regex_replace (Ersetzen mit regul&auml;ren Ausdr&uuml;cken)</title>
<informaltable frame=all>
@@ -2851,16 +3014,23 @@ AUSGABE:
<programlisting>
{* initialisieren *}
{cycle values="#eeeeee,#d0d0d0"}
{cycle}
{cycle}
{section name=rows loop=$data}
&lt;tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"&gt;
&lt;td&gt;{$data[rows]}&lt;/td&gt;
&lt;/tr&gt;
{/section}
AUSGABE:
#eeeeee
#d0d0d0
#eeeeee</programlisting>
&lt;tr bgcolor="#eeeeee"&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&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>
</sect1>
<sect1 id="language.function.debug">
@@ -3079,6 +3249,231 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
{/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>
</sect1>
<sect1 id="language.function.html.options">
<title>html_options (Ausgabe von HTML-Options)</title>
<informaltable frame=all>
@@ -3117,7 +3512,7 @@ Bitte geben Sie einen &lt;b&gt;Provinznamen&lt;/b&gt; ein.
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Das ausgew&auml;hlte Array Element.</entry>
<entry>Das ausgew&auml;hlte Option Element.</entry>
</row>
<row>
<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>Assoziatives Array mit Werten die ausgegeben werden sollen.</entry>
</row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>Nein</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Name der select-Gruppe</entry>
</row>
</tbody>
</tgroup>
</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
zu erzeugen. Die Funktion k&uuml;mmert sich ebenfalls um das setzen des ausgew&auml;hlten
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.
Rekursion wird unterst&uuml;tzt. Die Ausgabe ist XHTML kompatibel.
</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>
<title>html_options</title>
<programlisting>
{* nehmen Sie an, dass $cust_ids und $cust_names Arrays mit Werten sind,
w&auml;hrend $customer_id auch leer sein kann *}
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:
&lt;select name=customer_id&gt;
{html_options values=$cust_ids selected=$customer_id output=$cust_names}
&lt;/select&gt;
index.php:
{* alternativ k&ouml;nnen die Werte aus 'values' und 'output' als assoziative Arrays
an 'options' &uuml;bergeben werden. $customer_options ist in diesem Beispiel ein assoziatives Array *}
require('Smarty.php.class');
$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;
{html_options options=$customer_options selected=$customer_id}
{html_options options=$cust_options selected=$customer_id}
&lt;/select&gt;
AUSGABE:
AUSGABE (beide Beispiele):
&lt;select name=customer_id&gt;
&lt;option value="1000">Joe Schmoe&lt;/option&gt;
&lt;option value="1001" selected="selected">Jack Smith&lt;/option&gt;
&lt;option value="1002">Jane Johnson&lt;/option&gt;
&lt;option value="1003">Charlie Brown&lt;/option&gt;
&lt;option value="1000"&gt;Joe Schmoe&lt;/option&gt;
&lt;option value="1001" selected="selected"&gt;Jack Smith&lt;/option&gt;
&lt;option value="1002"&gt;Jane Johnson&lt;/option&gt;
&lt;option value="1003"&gt;Charlie Brown&lt;/option&gt;
&lt;/select&gt;</programlisting>
</example>
</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">
<title>html_select_date (Ausgabe von Daten als HTML-'options')</title>
<informaltable frame=all>
@@ -3737,6 +4292,115 @@ AUSGABE:
&lt;option value="am" selected&gt;AM&lt;/option&gt;
&lt;option value="pm"&gt;PM&lt;/option&gt;
&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>
</sect1>
<sect1 id="language.function.math">

View File

@@ -72,36 +72,11 @@
<sect1 id="installing.smarty.basic">
<title>Basis Installation</title>
<note>
<title>Technische Bemerkung</title>
<para>
Dieser Leitfaden geht davon aus, dass Sie Ihr Webserver- und PHP-Setup kennen
und mit den Namenskonventionen f&uuml;r Dateien und Verzeichnisse Ihres Betriebssystems
vertraut sind. Im Folgenden wird ein Unix-Dateisystem verwendet, stellen Sie also
sicher, dass sie die f&uuml;r Ihr Betriebssystem n&ouml;tigen &Auml;nderungen vornehmen.
</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:
Installieren Sie die Smarty Library Dateien aus dem /libs/ Verzeichnis
der Distribution. Diese PHP Dateien sollten NICHT angepasst werden. Sie
werden zwischen den verschieden Applikationen die Smarty verwenden geteilt.
Diese Dateien werden bei einem upgrade ersetzt.
</para>
<example>
<title>Smarty-Library Dateiliste</title>
@@ -114,10 +89,12 @@ debug.tpl
</example>
<para>
Sie k&ouml;nnen diese Dateien entweder in Ihrem PHP-'include_path' oder
auch in irgend einem anderen Verzeichnis ablegen, solange die Konstante
<link linkend="constant.smarty.dir">SMARTY_DIR</link> auf den korrekten
Pfad zeigt. Im Folgenden werden Beispiele f&uuml;r beide F&auml;lle aufgezeigt.
Smarty verwendet eine PHP Konstante namens <link linkend="constant.smarty.dir">SMARTY_DIR</link>
die den Systempfad zu den Library Dateien enth&auml;lt. Wenn Ihre Applikation keine
Probleme hat die Library Dateien zu finden, m&uuml;ssen Sie diese Konstante nicht zuweisen,
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>
So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript:
@@ -131,15 +108,29 @@ $smarty = new Smarty;</screen>
</example>
<para>
Wenn sich die Dateien ausserhalb des PHP-'include_path' befinden,
muss die Konstante <link linkend="constant.smarty.dir">SMARTY_DIR</link>
auf den absoluten Pfad zeigen und mit einem '/' enden. Nehmen wir an,
die Library-Dateien befinden sich in '/usr/local/lib/php/Smarty/':
Versuchen Sie das oben gezeigte Script auszuf&uuml;hren. Wenn Sie einen Fehler erhalten ('<emphasis>Smarty.class.php</emphasis> file could not be found'),
m&uuml;ssen Sie wie folgt vorgehen:
</para>
<example>
<title>Instanz von Smarty aus SMARTY_DIR erstellen:</title>
<screen>
<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>
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;</screen>
@@ -147,51 +138,40 @@ $smarty = new Smarty;</screen>
<para>
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>
F&uuml;r unser Beispiel werden wir die Smarty Umgebung f&uuml;r eine
G&auml;stebuch-Applikation konfigurieren. Wir verwenden den Applikationsnamen
nur, um die Verzeichnis-Struktur zu verdeutlichen. Sie k&ouml;nnen die selbe
Umgebung f&uuml;r alle Ihre Applikationen verwenden indem Sie 'guestbook'
durch dem Namen Ihrer Applikation ersetzen.
</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.
Stellen Sie sicher dass Sie die DocumentRoot Ihres Webservers kennen.
In unserem Beispiel verwenden wir "/web/www.mydomain.com/docs/". Alle
Smarty-Verzeichnisse werden immer nur von Smarty aufgerufen, nie vom Browser
direkt. Deshalb wird empfohlen diese Verzeichnisse <emphasis>ausserhalb</emphasis>
der DocumentRoot einzurichten.
</para>
<note>
<title>Technische Bemerkung</title>
<para>
Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen,
um m&ouml;gliche Direktzugriffe zu verhindern.
</para>
</note>
F&uuml;r unser installations-Beispiel werden wir die Umgebung f&uuml;r eine
G&auml;stebuchapplikation einrichten. Wir verwenden dies nur als Beispiel,
falls Sie ihre eigene Applikationsumgebung einrichten, ersetzen sie '/guestbook/'
einfach durch den Namen Ihrer eigener Applikation. Unsere Dateien werden unter
"/web/www.mydomain.com/smarty/guestbook/" abgelegt.
</para>
<para>
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
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
Standard-Verzeichnis-Index verwendet wird. Somit kann man das Skript
direkt mit 'http://www.domain.com/guestbook/' aufrufen. Falls Sie Apache
verwenden, l&auml;sst sich dies konfigurieren indem Sie 'index.php'
als letzten Eintrag f&uuml;r DirectoryIndex verwenden. (Jeder Eintrag muss
mit einem Leerzeichen abgetrennt werden).
</para>
</note>
</para>
<para>
Die Dateistruktur bis jetzt:
@@ -214,16 +194,6 @@ $smarty = new Smarty;</screen>
/web/www.mydomain.com/docs/guestbook/index.php</screen>
</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>
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')
@@ -282,14 +252,17 @@ Hallo, {$name}!</screen>
<para>
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.
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>
<example>
<title>Editieren von /web/www.mydomain.com/docs/guestbook/index.php</title>
<screen>
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
// Smarty laden
require('Smarty.class.php');
$smarty = new Smarty;
@@ -333,7 +306,8 @@ $smarty->display('index.tpl');</screen>
eine eigene Smarty-Umgebung zu initialisieren. Anstatt immer wieder
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/'
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>
<example>
@@ -341,10 +315,9 @@ $smarty->display('index.tpl');</screen>
<screen>
// Smarty Library Dateien laden
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
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');
class Smarty_GuestBook extends Smarty {
@@ -368,18 +341,6 @@ class Smarty_GuestBook extends Smarty {
}</screen>
</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>
Nun passen wir 'index.php' an, um 'setup.php' zu verwenden:
</para>

View File

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

View File

@@ -390,20 +390,6 @@
Normalerweise '}'.
</para>
</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">
<title>$compiler_class</title>
<para>
@@ -461,12 +447,27 @@
<paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
</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>
<para>
Wird verwendet, um an Template-Variablen weitere Daten anzuh&auml;ngen. Sie
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>
<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>
<title>append (anh&auml;ngen)</title>
<programlisting>
@@ -487,20 +488,27 @@
<paramdef>string <parameter>varname</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
</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>
<para>
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'
f&uuml;r weitere Erkl&auml;rungen.
anzuh&auml;ngen. Wenn Sie eine Variable via Referenz anh&auml;ngen und sie nachtr&auml;glich
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>
<note>
<title>Technische Bemerkung</title>
<para>
'append_by_ref()' ist effizienter als 'append()', da keine Kopie der Variable
erzeugt, sondern auf die Variable im Speicher referenziert wird. Beachten Sie
dabei, dass eine nachtr&auml;gliche &auml;nderung Original-Variable auch die zugewiesene Variable
&auml;ndert. PHP5 wird die Referenzierung automatisch &uuml;bernehmen, diese
Funktion dient als Workaround.
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>
@@ -559,11 +567,11 @@
<note>
<title>Technical Note</title>
<para>
'assign_by_ref()' ist effizienter als 'assign()', da keine Kopie der Variable
erzeugt wird, sondern auf die Variable im Speicher referenziert wird. Beachten Sie
dabei, dass eine nachtr&auml;gliche &auml;nderung Original-Variable auch die zugewiesene Variable
&auml;ndert. PHP5 wird die Referenzierung automatisch &uuml;bernehmen, diese
Funktion dient als Workaround.
Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie
anzuh&auml;ngen. Wenn Sie eine Variable via Referenz anh&auml;ngen und sie nachtr&auml;glich
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.
</para>
</note>
<example>
@@ -845,27 +853,80 @@
echo $output;</programlisting>
</example>
</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">
<title>get_template_vars (Template-Variablen extrahieren)</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>get_template_vars</function></funcdef>
<paramdef><parameter></parameter></paramdef>
<paramdef>string <parameter><optional>varname</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<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>
<example>
<title>get_template_vars (Template-Variablen extrahieren)</title>
<programlisting>
// Template-Variable 'foo' extrahieren
$foo = $smarty->get_template_vars('foo');
// alle zugewiesenen Template-Variablen extrahieren
$tpl_vars = $smarty->get_template_vars();
// alle zugewiesenen Template-Variablen extrahieren
$tpl_vars = $smarty->get_template_vars();
// Anschauen
var_dump($tpl_vars);</programlisting>
// Anschauen
print_r($tpl_vars);</programlisting>
</example>
</sect1>
<sect1 id="api.is.cached">

View File

@@ -122,16 +122,16 @@
<title>embedded quotes syntax</title>
<programlisting>
SYNTAX EXAMPLES:
{func var="test $foo test"} &lt-- sees $foo
{func var="test $foo_bar test"} &lt-- sees $foo_bar
{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 (not $foo.bar)
{func var="test `$foo.bar` test"} &lt-- sees $foo.bar
{func var="test $foo test"} &lt;-- sees $foo
{func var="test $foo_bar test"} &lt;-- sees $foo_bar
{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 (not $foo.bar)
{func var="test `$foo.bar` test"} &lt;-- sees $foo.bar
PRACTICAL EXAMPLES:
{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>
{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>
</example>
</sect1>

View File

@@ -307,10 +307,19 @@ class Smarty_Compiler extends Smarty {
$template_compiled .= $text_blocks[$i];
/* 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)) {
$strip_tags = $match[0];
$strip_tags_modified = preg_replace("!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", '', $strip_tags);
$strip_tags_modified = preg_replace('![\r\n]+!m', '', $strip_tags_modified);
if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled, $_match)) {
$strip_tags = $_match[0];
$_strip_search = array(
'%([^\\\\]\?>)\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++)
$template_compiled = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s",
$this->quote_replace($strip_tags_modified[$i]),