- Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
- bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
- dies hinterher wieder auf den richtigen Wert zu setzen:
- <programlisting>
- my $saved_numberformat = $::myconfig{numberformat};
- $::myconfig{numberformat} = $numberformat;
- # (...) div Berechnungen
- $::myconfig{numberformat} = $saved_numberformat;
- </programlisting>
- <para>Das Objekt der Klasse Form hat leider im Moment noch viele
- zentrale Funktionen die vom internen Zustand abhängen, deshalb
- bitte nie einfach zerstören oder überschreiben (zumindestens nicht kurz
- vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
- Es geht ziemlich sicher etwas kaputt.</para>
-
- <para><varname>$::form</varname> ist gleichzeitig der Standard Scope
- in den <productname>Template::Toolkit</productname> Templates
- außerhalb der Controller: der Ausdruck <function>[% var
- %]</function> greift auf <varname>$::form->{var}</varname> zu.
- Unter Controllern ist der Standard Scope anders, da lautet der
- Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
- normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
- <function><%var%></function> zeigt auf
- <varname>$::form->{var}</varname>.
- Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht
- man häufiger solche Konstrukte:
- <programlisting>
- [%- IF business %]
- # (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
- [%- END %]
- </programlisting>
- Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion
- <function>$form->parse_html_template</function> wird explizit noch ein zusätzlicher Hash
- übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
- <function>$form->parse_html_template("is/form_header", \%TMPL_VAR);</function>
-
- Innerhalb von Schleifen wird
- <varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname>
- bevorzugt, wenn vorhanden.</para>
- Zum Beispiel in SL/DO.pm welche über alle Positionen eines Lieferscheins
- in Schleife läuft:
- <programlisting>
- for $i (1 .. $form->{rowcount}) {
- (...)
- push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
- push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
- push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
- </programlisting>
- </sect3>
+
+ <para>
+ Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
+ bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
+ dies hinterher wieder auf den richtigen Wert zu setzen:
+ </para>
+
+ <programlisting> my $saved_numberformat = $::myconfig{numberformat};
+ $::myconfig{numberformat} = $numberformat;
+ # (...) div Berechnungen
+ $::myconfig{numberformat} = $saved_numberformat;</programlisting>
+
+ <para>
+ Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
+ nie einfach zerstören oder überschreiben (zumindestens nicht kurz vor einem Release oder in Absprache über bspw. die devel-Liste
+ ;-). Es geht ziemlich sicher etwas kaputt.
+ </para>
+
+ <para>
+ <varname>$::form</varname> ist gleichzeitig der Standard Scope in den <productname>Template::Toolkit</productname> Templates
+ außerhalb der Controller: der Ausdruck <function>[% var %]</function> greift auf <varname>$::form->{var}</varname> zu. Unter
+ Controllern ist der Standard Scope anders, da lautet der Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
+ normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h. <function><%var%></function> zeigt auf
+ <varname>$::form->{var}</varname>. Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht man häufiger
+ solche Konstrukte:
+ </para>
+
+ <programlisting>[%- IF business %]
+# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
+[%- END %]</programlisting>
+
+ <para>
+ Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion <function>$form->parse_html_template</function>
+ wird explizit noch ein zusätzlicher Hash übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
+ </para>
+
+ <programlisting>$form->parse_html_template("is/form_header", \%TMPL_VAR);</programlisting>
+
+ <para>
+ Innerhalb von Schleifen wird <varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname> bevorzugt, wenn vorhanden. Ein
+ Beispiel findet sich in SL/DO.pm, welches über alle Positionen eines Lieferscheins in Schleife läuft:
+ </para>
+
+ <programlisting>for $i (1 .. $form->{rowcount}) {
+ # ...
+ push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
+ push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
+ push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
+ # ...
+}</programlisting>
+ </sect3>