Schrift
[thread]807[/thread]

CGI::Application Werte mit param() übergeben



<< >> 6 Einträge, 1 Seite
Superfrank
 2006-09-05 12:40
#8635 #8635
User since
2006-09-05
164 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich schreibe gerade eine kleine Webanwendung und versuche dabei erstmals CGI::Application zu verwenden. Es gelingt mir leider nicht so ganz mit param() Variablen an den jeweiligen Runmode zu übergeben (es ist das param() von CGI::Application gemeint, nicht von CGI).
Z.B am Anfang wird eine Funkton aufgerufen, die überprüft ob eine Session noch gültig ist. Wenn es einen Fehler zurückliefert soll der Rückgabewert an den Runmode "login" übergeben werden und dort die Fehlermeldung ausgegeben werden.


Code: (dl )
1
2
3
4
5
6
7
8
$session_check = session_check();
# wenn rueckgabewert dann ist was faul
if ($session_check){
$app->param('session_error' => $session_check);
$app->mode_param(sub {'login'});
}

$app->run();


In runmode login funktioniert

Code: (dl )
my $error = $self->param('session_error');


leider nicht und es ist mir nur gelungen den Fehler mit

Code: (dl )
my @error = $self->param();


auszulesen was irgendwie umständlich ist wenn mehrere Werte übergeben werden sollen.

Kann mir jemand auf die Sprünge helfen?



Viele Grüsse

Frank
renee
 2006-09-05 12:57
#8636 #8636
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du mal überprüft, ob wirklich was in $session_check steht??
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/
Superfrank
 2006-09-05 13:37
#8637 #8637
User since
2006-09-05
164 Artikel
BenutzerIn
[default_avatar]
[quote=renee,05.09.2006, 10:57]Hast Du mal überprüft, ob wirklich was in $session_check steht??[/quote]
ja, war das erste was ich überprüft habe ;-)

Ich habe aber gerade herausgefunden, daß es mit

Code: (dl )
1
2
my %error = $self->param();
my $session_fehler = $error{'session_error'};


funktioniert. Ich kann aber immer noch nicht mehrere key-Value-Paare übergeben.

Viel Grüsse

Frank
Superfrank
 2006-09-05 13:48
#8638 #8638
User since
2006-09-05
164 Artikel
BenutzerIn
[default_avatar]
jetzt habe ich es:

Code: (dl )
1
2
3
4
my %message_to_runmode;
$message_to_runmode{'session_error'} = 'blubberdieblubb';
$message_to_runmode{'ich_bin_auch_dabei'} = 'ich in der zweite wert';
$app->param(%message_to_runmode);


und auslesen in runmode login mit

Code: (dl )
1
2
3
          my %message = $self->param();
my $message1 = $message{'session_error'};
my $message2 = $message{'ich_bin_auch_dabei'};


Damit kann ich gut leben.

Viele Grüsse

Frank
renee
 2006-09-05 13:53
#8639 #8639
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also bei funktioniert das prima:

testapp.cgi:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;
use FindBin ();
use lib $FindBin::Bin;
use TestApp;

my $webapp = TestApp->new();
$webapp->param(test => 1, one => 'hello', two => 'world');
$webapp->run();


TestApp.pm:
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
package TestApp;

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use base ('CGI::Application');

sub setup{
my ($self) = @_;
$self->start_mode('login');
$self->mode_param('mode');
$self->run_modes(AUTOLOAD => \&login,
login => \&login,);
}


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

my $string = "";

$string = join("<br />",map{$_ . " --> " . $self->param($_)}qw(test one two));

return $string;
}

1;
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/
pktm
 2006-09-05 16:45
#8640 #8640
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Es gibt da übrigens auch ein Session-Plugin - falls du sowas benutzen möchtest.
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 6 Einträge, 1 Seite



View all threads created 2006-09-05 12:40.