Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f3978ea1

Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt

  • ID f3978ea1c30d283b9d46be0766a33c568ade511c
  • Vorgänger dac8a136
  • Nachfolger 18b1b180

SL::{Controller,Presenter}->render: $template kann auch ref auf Instanz von EscapedText sein

Die folgenden Fälle werden nun für $template wie folgt behandelt:

- keine Ref: $tempalte wird als Dateiname interpretiert
- Ref auf einen String (ref eq 'SCALAR'): Zu rendernder String,
direkte Übergabe an Template
- Instanz von EscapedText und Ref auf Instanz von EscapedText: Zu
rendernder String ist der von EscapedText geproxite Text, direkte
Übergabe an Template mit "process => 1" und direktes Zurückgeben mit
"process => 0"

Damit ist es aus Caller-Sicht einfacher, den Aufruf richtig
hinzubekommen:

my $some_result = $self->presenter->grouped_record_list($objects);
  # Don't care whether or not $some_result is already an instance of
  # EscapedText: never treat this as a file name
$self->render(\$some_result, { layout => 0 });

Unterschiede anzeigen:

SL/Controller/Base.pm
80 80
  croak "Unsupported type: " . $options->{type} unless $options->{type} =~ m/^(?:html|js|json)$/;
81 81

  
82 82
  # The "template" argument must be a string or a reference to one.
83
  $template = ${ $template }                                       if ((ref($template) || '') eq 'REF') && (ref(${ $template }) eq 'SL::Presenter::EscapedText');
83 84
  croak "Unsupported 'template' reference type: " . ref($template) if ref($template) && (ref($template) !~ m/^(?:SCALAR|SL::Presenter::EscapedText)$/);
84 85

  
85 86
  # If all output is turned off then don't output the header either.

Auch abrufbar als: Unified diff