X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/b27c05d659c377d0911e6b1bde6d4d92d6cc19e2..0ffb94b48c8c9183805633241f53bd0b0f66d176:/SL/Template/Simple.pm diff --git a/SL/Template/Simple.pm b/SL/Template/Simple.pm index d7a7c3525..8ad622043 100644 --- a/SL/Template/Simple.pm +++ b/SL/Template/Simple.pm @@ -10,6 +10,8 @@ package SL::Template::Simple; use strict; +use Scalar::Util qw(blessed); + # Parameters: # 1. The template's file name # 2. A reference to the Form object @@ -91,7 +93,19 @@ sub _get_loop_variable { my $form = $self->{form}; my $value; - if (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { + if ($var =~ m/\./) { + $value = $form; + for my $part (split(m/\./, $var)) { + if (ref($value) =~ m/^(?:Form|HASH)$/) { + $value = $value->{$part}; + } elsif (blessed($value) && $value->can($part)) { + $value = $value->$part; + } else { + $value = ''; + last; + } + } + } elsif (($get_array || @indices) && (ref $form->{TEMPLATE_ARRAYS} eq 'HASH') && (ref $form->{TEMPLATE_ARRAYS}->{$var} eq 'ARRAY')) { $value = $form->{TEMPLATE_ARRAYS}->{$var}; } else { $value = $form->{$var};