Schrift
[thread]7974[/thread]

Switch und Perlversion (Seite 2)



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
morph
 2006-05-16 05:02
#66045 #66045
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Strat,13.05.2006, 11:16][...]lieber mit einem hash zu arbeiten... [...] dann verwende ich haeufig sowas wie das folgende:[/quote]
Hi Strat.

Dein Code der hat was. Den habe ich mir jetzt mal als Vorlage genommen und mein eigenes Ding draus gezimmert. Vielen Dank für die wahnsinnig gute Anregung. :)

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
31
32
33
34
[...]
sub content {
my ($section, $action) = @_;
my $subs = {
user_index => \&user_index,
user_unew => \&user_new,
user_uchange => \&user_change,
user_udelete => \&user_delete,
user_gnew => \&user_new,
user_gchange => \&user_change,
user_gdelete => \&user_delete,

project_index => \&project_index,
[...]

section_error => \&section_error
};
$tmp = $section."_".$action;

if ( exists $subs->{$tmp} ) {
$tmp = $subs->{$tmp};
}
else {
$tmp = $subs->{'section_error'};
$action = $sysmsg{section_error};
}
$tmp->( $action );
}

sub section_error {
$template->param( CONTENT_ERROR => 1 );
$template->param( ERROR_HEADER => shift );
}
[...]


Die Templates habe ich übrigens mit TMPL_IF und TMPL_INCLUDE verschachtelt, weil es bei mir Bereiche gibt, die dann wieder ihre Unterbereiche haben.

So long....

-uw\n\n

<!--EDIT|TbHoCne|1147741568-->
Strat
 2006-05-16 11:47
#66046 #66046
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
das schoene bei dieser version ist, dass man diesen Hash gleich auch noch fuer weitere Konfiguration verwenden kann, z.B. welches Template zu welcher sub gehoert, standardverhalten, ...
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
package MyApp::Config;
use warnings;
use strict;
use Readonly;

Readonly $Actions => {
user_index => {
code => \&user_index,
template => 'user_index.tmpl',
order_by => 'name desc',
},
user_unew => {
code => \&user_new,
template => 'user_unew.tmpl',
title => 'Blablubb',
},
user_uchange => {
code => \&user_change,
template => 'user_uchange.tmpl',
error_template => 'user_uchange_error.tmpl',
title => 'heidiho',
default_mask => 0664,
},
# ...
};

oder so aehnlich.

gerade bei CGI-Scripten verwende ich sowas sehr gerne; dann wird die subroutine fuer 'code' meist recht schlank, wenn ich daraus den Namen der Template-Datei sowie einen Hash mit den Werten zurueckgebe, und die dann im hauptprogramm ueber einen standardmechanismus befuelle.

Hmmm, eigentlich muesste man sowas auch sehr gut mit CPAN:YAML abbilden koennen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-05-12 17:21.