Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0ffb94b4

Von Moritz Bunkus vor etwa 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
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