Schrift
[thread]198[/thread]

Probleme bei HTML::Template: Objekt erstellen geht nicht



<< >> 8 Einträge, 1 Seite
pktm
 2004-03-09 20:44
#1564 #1564
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Wenn ich im nachfolgenden Code ein Template-Objekt (HTML::Template) erstelle erhalte ich immer diesen

Fehler:
Quote
fcmsadmin.cgi: Can't call method "can" on unblessed reference at c:/usr/site/lib/HTML/Template.pm

line 1008.

Code: (dl )
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
sub getTemplate {
# -- usage
# my $template = getTemplate('TemplateName', $ldataObj, [$associate]);
my $templateName = shift;
my $ldata = shift;
my $associate = shift;
#print STDERR $ldata->{data}->{templateDir} || 'error';
my $filename = undef;
my %params = ();
if( -e "$ldata->{data}->{templateDir}/$templateName.tmpl" ) {
$filename = "$ldata->{data}->{templateDir}/$templateName";
}elsif( -e "$ldata->{data}->{templateDir}/nofile.tmpl" ) {
$filename = "$ldata->{data}->{templateDir}/nofile.tmpl";
$params{'errorcode'} = 1;
$params{'error'} = 'Das angeforderte template kann nicht gefunden werden!';
}else{
print $cgi->header();
print $cgi->start_html();
print "Template für Fehlerausgabe konnte nicht geladen werden."; # backtracing!"
print $cgi->end_html();
exit(0);
}
my $zw_t = HTML::Template->new( filename => $filename, die_on_bad_params => 0, associate =>

$associate );
while( my ($key, $val) = each %params ){
$zw_t->param( $key => $val );
}
return $zw_t->output();
} # subsTemplate

Sieht wer wo der Fehler liegt?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2004-03-10 00:14
#1565 #1565
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Problem gefunden!
Ich muss dem Template-Objekt andere Objekte zur Assoziation übergeben.
Ich binde mein CGI-Objekt aber ein und kopiere dann die Übergebenen Werte in einen Hash:
Code: (dl )
1
2
3
# ---- CGI
my $cgi = CGI->new();
my $query = $cgi->Vars();  


So muss ich entweder $cgi oder bless($query) übergeben.

Frage:
Ist es irgendwie verwerflich dem Template-Objekt bless($hashref); zu übergeben, wenn $hashref einfach nur eine Liste mit Key|Value-Pärchen ist?
Nur so, weil man ja explizit andere Objekte angeben soll und eben nicht irgendwelche Dingens.
mfg pktm\n\n

<!--EDIT|pktm|1078870528-->
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-03-10 02:16
#1566 #1566
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich seh leider nicht, in wlecher Zeile der Fehler erzeugt werden könnte... du gibst zwar ne Zeile an, aber nicht wo das in deinem Code ist...
Strat
 2004-03-10 16:05
#1567 #1567
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das Hauptproblem ist, dass du nicht ueberpruefst, ob das HTML::Template->new erfolgreich war oder nicht. Du kannst dem Konstruktor ein (oder mehrere) CGI- (oder aehnliches) Objekt mitgeben:
Code: (dl )
1
2
my $cgi = CGI->new();
my $template = HTML::Template->new(filename => $filename, associate => $cgi);

und so die parameter von einem CGI-Objekt 1:1 als Parameter zu HTML::Template zu uebergeben, aber da sehe ich keinen Sinn darin, weil doch bei den meisten Parametern eine Sicherheitsueberpruefung noetig sein duerfte...

ich verwende da gerne was wie das folgende (ist zwar nicht am effizientesten):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my $template;
eval {
$template = HTML::Template->new(
filename => $filename,
%options,
);
}; # eval

if ($@) {
# fehlerbehandlung
}

oder aehnlich
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2004-03-10 16:51
#1568 #1568
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=esskar,10.03.2004, 01:16]ich seh leider nicht, in wlecher Zeile der Fehler erzeugt werden könnte... du gibst zwar ne Zeile an, aber nicht wo das in deinem Code ist...[/quote]
In meinem Code wird nichts ausgegeben, die Fehermeldung bezieht sich auf das Modul HTML::Template (dort Zeile 1000 irgendwas).
Der Fehler wurde (durch auskommentieren festgestellt) beim erzuegen des HTML::Template-Objektes erzeugt.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2004-03-11 11:51
#1569 #1569
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich tippe mal darauf, dass das associate den Fehler verursacht. Gibt es einen Grund, wieso du das benuetzt? Wenn nicht, wirf es doch einfach raus
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2004-03-11 15:23
#1570 #1570
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nunja, wie oben schon gesagt habe ich nicht das CGI-Objekt übergeben, sondern nur den Hash in dem die Parameter drin stehen (s. obigen Code).
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-03-11 15:42
#1571 #1571
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=pktm,11.03.2004, 14:23]Nunja, wie oben schon gesagt habe ich nicht das CGI-Objekt übergeben, sondern nur den Hash in dem die Parameter drin stehen (s. obigen Code).[/quote]
warum?
<< >> 8 Einträge, 1 Seite



View all threads created 2004-03-09 20:44.