Schrift
[thread]3044[/thread]

Frage zu HTML::Template::Compiled: <%IF foo%><%IF bar%>bla<%/IF%><%/IF%> (Seite 3)

Leser: 1


<< |< 1 2 3 4 5 6 ... 11 >| >> 107 Einträge, 11 Seiten
pq
 2006-12-29 22:41
#28720 #28720
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
ich kann HTC in diesem fall nicht so programmieren wie HT, denn ich erlaube
ja auch methodenaufrufe. ich weiss also allein aus dem template nicht, wie
der parameterhash aussehen muss.
umgekehrt geht eine strict-option auch nicht zur compile-zeit, da ich erst
nach dem param()-aufruf weiss, welche parameter übergeben wurden.
das ginge also dann nur zur laufzeit.
ich würde bei der strict-option dann eben zusätzlich auf exists prüfen.
das macht es langsamer, aber wenn es nur in der entwicklungsphase
benutzt wird, macht das ja nichts.
man muss halt immer bedenken, dass es ein ganz anderer ansatz als HT
ist. das template wird einmalig in eine perl-subroutine verwandelt, und
die parameter werden in einem hash abgelegt. die_on_bad_params
ist so nicht nur schwierig zu implementieren, sondern unmöglich. einzig
in HTC::Classic wäre es möglich (weil es keine methoden kann), aber
ich weiss nicht, ob mir dafür der aufwand zu gross ist, wenn ich
selbst immer noch keinen sinn darin sehe.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
esskar
 2006-12-29 22:59
#28721 #28721
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich bin dagegen, denn weihnachten ist schon vorbei, und ich glaube, HTC kann immer noch keine Expressions. Ich lass mich jetzt aber auch gerne enthaupten, wenn es es doch schon kann.

:)
pq
 2006-12-30 00:17
#28722 #28722
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
ich hab nicht gesagt, welches weihnachten es sein wird =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2006-12-30 11:01
#28723 #28723
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
So wie ich das sehe, sind Methoden doch auch nur Variablen mit speziellen Eigenschaften, denen dann beim Aufruf die jeweilige Methode (Eigenschaft) angehangen wird. Oder irre ich da? Im POD sehe ich keine Parmeter für die Methoden und auch kein Beispiel in der Art object.foo.bar.baz alias $object->foo()->bar()->baz(). Ist das evtl. nur nicht dokumentiert?

Ach @esskar, Weihnachten oder nicht. Mir ist das eigentlich völlig egal. Die Diskussion hier mit @pq ist doch vom Niveau recht gut. Und wenn sie gedanklich durch das eine oder andere angeregt wird, ist das doch nicht zu kritisieren. Keiner erwartet doch, daß hier sofort etwas implementiert wird. Ich auch nicht. Als Modulautor, und das ist eindeutig @pq, will man doch das Optimum erreichen, wie das auch immer aussieht. Da muß man Prioritäten setzen und dazu gehört auch das eine oder andere nein. Wenn Ruhe eingezogen ist und wieder Zeit ist, kann man Entscheidungen aber auch immer wieder neu überdenken.\n\n

<!--EDIT|steffenw|1167469323-->
$SIG{USER} = sub {love 'Perl' or die};
esskar
 2006-12-30 11:07
#28724 #28724
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
achso, ich dachte man könnte hier abstimmen! ;)
renee
 2006-12-30 11:46
#28725 #28725
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also so etwas wie die_on_bad_params sollte nie ein default-Wert sein. Zum Entwickeln ist es sicherlich häufig recht sinnvoll. Aber ich zum Beispiel baue bei der Webseite für die Perl-Zeitschrift darauf, dass HTC das einfach so schluckt. Da kann man einige Parameter bei TMPL_IFs einfach unterschlagen (wenn es ungesetzt sein soll).
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
steffenw
 2006-12-30 11:53
#28726 #28726
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Aber @renee, die parameter übermittelst du schon mit param, nur ist da undef drin, weil sie ggf. nie befüllt worden sind oder?

bad parameters - die definition ist doch in sich schon schwamm oder?\n\n

<!--EDIT|steffenw|1167472455-->
$SIG{USER} = sub {love 'Perl' or die};
renee
 2006-12-30 13:26
#28727 #28727
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nee, ich übermittel die *gar nicht*

Ich verwende die meisten Templates für mindestens zwei Fälle.

Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
Jede Menge anderer Kram wie z.B. ne Inhaltsuebersicht...
<!-- TMPL_IF NAME=MESSAGE -->
<form action="<!-- TMPL_VAR NAME=ACTION -->" method="post">
<input type="hidden" name="id" value="<!-- TMPL_VAR NAME=ID -->">
<input type="submit" value="Ja, Artikel l&ouml;schen">
<input type="hidden" name="action" value="committed_article_deletion">
<input type="hidden" name="sid" value="<!-- TMPL_VAR NAME=SID -->">
</form>
<!-- /TMPL_IF -->


Und im Skript dann (mit CPAN:CGI::Application):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sub fall1{
my ($self) = @_;

# einige Berechnungen, Datenbankinteraktionen, etc.

my $template = $self->load_tmpl($self->{tmpl_dir} . '/template.tmpl');
$template->param(IRGENDWAS => $value);
return $template->output();
}

sub fall2{
my ($self) = @_;

# jede Menge anderer Sachen...

my $template = $self->load_tmpl($self->{tmpl_dir} . '/template.tmpl');
$template->param(IRGENDWAS => $value,
MESSAGE => $msg,);
return $template->output();
}


Beide Fälle benutzen zwar das gleiche Template, machen aber so unterschiedliche Sachen, dass ich es nicht in eine Sub zusammenfassen wollte.

So übergebe ich bei der einen Sub keinen Parameter für MESSAGE, weil da _nie_ der Fall eintritt wo ich MESSAGE brauchen würde.

So spare ich mir eine umständliche Sub (durch Aufteilung in zwei!) und ich muss kein zweites Template machen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
steffenw
 2006-12-30 15:24
#28728 #28728
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja stimmt @renee, das Erzwingen von parametern würde das Template einschränken.
$SIG{USER} = sub {love 'Perl' or die};
pq
 2006-12-30 16:03
#28729 #28729
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=steffenw,30.12.2006, 10:01]So wie ich das sehe, sind Methoden doch auch nur Variablen mit speziellen Eigenschaften, denen dann beim Aufruf die jeweilige Methode (Eigenschaft) angehangen wird. Oder irre ich da? Im POD sehe ich keine Parmeter für die Methoden und auch kein Beispiel in der Art object.foo.bar.baz alias $object->foo()->bar()->baz(). Ist das evtl. nur nicht dokumentiert?[/quote]
hmm?
http://search.cpan.org/~tinita....OBJECTS

entscheidend ist, <tmpl_var foo.bar.baz> kann zu $param->{foo}->bar()->{baz} werden
oder zu $param->foo()->{bar}->baz(), je nachdem, was in den skalaren
drinsteckt, objekte oder hashes.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 3 4 5 6 ... 11 >| >> 107 Einträge, 11 Seiten



View all threads created 2006-12-15 15:33.