Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 41400107

Von Moritz Bunkus vor fast 14 Jahren hinzugefügt

  • ID 41400107ec8929d6ea107de7f5238006e9de029c
  • Vorgänger 95ecb428
  • Nachfolger eb1efd21

Neuer Routingmechanismus für Controller, die als Package implementiert sind

Voraussetzungen:

  • Controller liegt in SL/Controller/Class.pm und ist von
    SL::Controller::Base abgeleitet.
  • Der Name von Subs, die als Action aufgerufen werden sollen, muss mit
    "action_" beginnen. Alle Versuche, andere (auch existierende) Subs
    aufzurufen, werden entsprechend mit Fehlermeldungen quittiert.
  • Pro Request wird eine Instanz der Klasse erzeugt und danach vom
    garbage collector entsorgt.
  • Im Controller "$self->parse_html_template()" verwenden, dann ist im
    Template $self als SELF verfügbar, z.B. "[% FOREACH message =
    SELF.messages %]".
  • Form-Parameter "action" muss das Format "Controller::action"
    besitzen. "Controller" ist der Packagename ohne die Präfixe, sprich
    der Basisdateiname. "action" ist der Name der aufzurufenden Sub ohne
    das "action_"-Präfix. Aus "Message::list" würde also grob gesehen
    "SL::Controller::Message->new->action_list()".
  • Das Script in der URL muss 'controller.pl' heißen.

Conflicts:

SL/Dispatcher.pm
scripts/locales.pl

Unterschiede anzeigen:

scripts/locales.pl
31 31
my $basedir      = "../..";
32 32
my $locales_dir  = ".";
33 33
my $bindir       = "$basedir/bin/mozilla";
34
my @progdirs     = ( "$basedir/SL/Template/Plugin" );
34
my @progdirs     = ( "$basedir/SL/Controller", "$basedir/SL/Template/Plugin" );
35 35
my $dbupdir      = "$basedir/sql/Pg-upgrade";
36 36
my $dbupdir2     = "$basedir/sql/Pg-upgrade2";
37 37
my $menufile     = "menu.ini";

Auch abrufbar als: Unified diff