Revision 0ffb94b4
Von Moritz Bunkus vor etwa 13 Jahren hinzugefügt
SL/Template/Simple.pm | ||
---|---|---|
10 | 10 |
|
11 | 11 |
use strict; |
12 | 12 |
|
13 |
use Scalar::Util qw(blessed); |
|
14 |
|
|
13 | 15 |
# Parameters: |
14 | 16 |
# 1. The template's file name |
15 | 17 |
# 2. A reference to the Form object |
... | ... | |
91 | 93 |
my $form = $self->{form}; |
92 | 94 |
my $value; |
93 | 95 |
|
94 |
if (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { |
|
96 |
if ($var =~ m/\./) { |
|
97 |
$value = $form; |
|
98 |
for my $part (split(m/\./, $var)) { |
|
99 |
if (ref($value) =~ m/^(?:Form|HASH)$/) { |
|
100 |
$value = $value->{$part}; |
|
101 |
} elsif (blessed($value) && $value->can($part)) { |
|
102 |
$value = $value->$part; |
|
103 |
} else { |
|
104 |
$value = ''; |
|
105 |
last; |
|
106 |
} |
|
107 |
} |
|
108 |
} elsif (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { |
|
95 | 109 |
$value = $form->{TEMPLATE_ARRAYS}->{$var}; |
96 | 110 |
} else { |
97 | 111 |
$value = $form->{$var}; |
Auch abrufbar als: Unified diff
Unterstützung für Variablenzugriffe auf Objekte/Hashes in Druckvorlagen
Wenn z.B. SL::Order->order_details $form->{ORDER_OBJ} auf eine Instanz
von SL::DB::Order setzt, so kann im Template wie folgt darauf
zugegriffen werden: