User since
2003-08-15
692
Artikel
BenutzerIn
Ist das normal, daß der erste _ gefressen wird?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use strict;
use warnings;
use HTML::Template::Compiled;
my $htc = HTML::Template::Compiled->new(
tagstyle => [qw(+asp -comment -php -tt)],
scalarref => \<<'EOT');
<%= foo%>
<%= _foo%>
<%= __foo%>
<%= ___foo%>
<%= ____foo%>
EOT
$htc->param(
foo => 'bar',
_foo => '_bar',
__foo => '__bar',
___foo => '___bar',
____foo => '____bar',
);
print $htc->output();
__END__
bar
bar
_bar
__bar
___bar
Und noch eine Frage:
Komme ich von der LOOP aus an die Parameter, die parallel zur Loop stehen irgendwie wieder ran?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use strict;
use warnings;
use HTML::Template::Compiled;
my $htc = HTML::Template::Compiled->new(
tagstyle => [qw(+asp -comment -php -tt)],
scalarref => \<<'EOT');
<%= var%>
<%LOOP loop%>
<%= var%>
value? <%= __HTC__.param.var%>
<%/LOOP%>
EOT
$htc->param(
var => 'value',
loop => [{var => 'loop_value'}],
);
print $htc->output();
__END__
value
loop_value
value?
$SIG{USER} = sub {love 'Perl' or die};
User since
2003-08-04
12208
Artikel
Admin1
[quote=steffenw,04.01.2007, 18:09]Ist das normal, daß der erste _ gefressen wird?[/quote]
ja, _ steht für den aktuellen parameter. sonst musst du
HTC::Classic verwenden.
User since
2003-08-04
12208
Artikel
Admin1
[quote=steffenw,04.01.2007, 18:09]Und noch eine Frage:
Komme ich von der LOOP aus an die Parameter, die parallel zur Loop stehen irgendwie wieder ran?
[/quote]
ja. mit 2 punkten kommst du einen level hoeher. mit 3 2 level hoeher.
<%LOOP loop%>
...
<%= ..var %>
<%/LOOP%>
mit einem einzelnen punkt greifst du auf "root" zu.
also hier
<%= .var %>
User since
2003-08-15
692
Artikel
BenutzerIn
geil !!!!
$SIG{USER} = sub {love 'Perl' or die};
User since
2003-08-15
692
Artikel
BenutzerIn
Kann es sein, daß <TMPL_VAR bla ESCAPE=URL> bei utf-8 nicht funktioniert, weil es uri_escape und nicht uri_escape_utf8 benutzt?
$SIG{USER} = sub {love 'Perl' or die};
User since
2003-08-04
12208
Artikel
Admin1
ui, das könnte wohl sein... ich steh mit utf-8 immer noch auf kriegsfuss.
muss ich mal überlegen, wie ich das löse.
am rande: in der nächsten version kommt
<%loop array join=", " %>
User since
2003-08-15
692
Artikel
BenutzerIn
Ich denke, utf8-flag prüfen und dann die richtige Entscheidung fällen. Wir stellen nämich gerade um und ich möchte das Template deswegen nicht aufgeben müssen.
Ich habe heute gerade __first__ und __inner__ verwendet und irgendwie fehlte mir da __first_&_inner__.
<%LOOP var.loop%>
<%= _ ESCAPE=HTML%>
<%IF __first__%><br /><%/IF%>
<%IF __inner__%><br /><%/IF%>
<%= .var.haenge_das_immer_ans_laste_element_an%>
<%/LOOP%>
$SIG{USER} = sub {love 'Perl' or die};
User since
2003-11-28
3645
Artikel
ModeratorIn
[quote=pq,13.03.2007, 19:25]ui, das könnte wohl sein... ich steh mit utf-8 immer noch auf kriegsfuss.
muss ich mal überlegen, wie ich das löse.
[/quote]
Wahrscheinlich brauchst du die gleiche Lösung wie bei Perl-Sourcecode oder bei Pods: du musst deklarieren, welches Encoding deine Templates haben, also etwas Analoges zu "use utf8" bzw. "use encoding '....'" in Perl-Code oder "=encoding ..." in Pod. Das könnte eine Template-Direktive sein, wobei es am leichtesten ist, wenn nur eine solche Direktive erlaubt wäre, sie sich zudem global für das ganze Template auswirkt. Oder man setzt das Encoding im Konstruktor des Templates. Dann könnte man noch das Ausgangsencoding setzen, könnte es aber auch bei Perl-Characters belassen und es dem User überlassen, ob er Encode verwendet.
Wir können uns ja auch mal beim Mittagessen treffen :-)
User since
2003-08-04
12208
Artikel
Admin1
[quote=ptk,13.03.2007, 23:27]Wahrscheinlich brauchst du die gleiche Lösung wie bei Perl-Sourcecode oder bei Pods: du musst deklarieren, welches Encoding deine Templates haben[/quote]
ich glaube, hier ging es eher um die template-parameter...
ich glaub übrigens, HTML::Template macht auch nur uri_escape
User since
2003-08-04
14371
Artikel
ModeratorIn
Man könnte ja bei
new ein UTF-8-Flag setzen... wenn es gesetzt ist, dann uri_escape_utf8, sonst einfach uri_escape...