Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0ffb94b4

Von Moritz Bunkus vor mehr als 13 Jahren hinzugefügt

  • ID 0ffb94b48c8c9183805633241f53bd0b0f66d176
  • Vorgänger b27c05d6
  • Nachfolger f5ea3094

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:

Kunddenname: <%ORDER_OBJ.customer.name%>

Unterschiede anzeigen:

SL/Template/Simple.pm
use strict;
use Scalar::Util qw(blessed);
# Parameters:
# 1. The template's file name
# 2. A reference to the Form object
......
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};

Auch abrufbar als: Unified diff