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:

SL/Form.pm
263 263

  
264 264
  _recode_recursively(SL::Iconv->new($encoding, $db_charset), $self);
265 265

  
266
  $self->{action}  =  lc $self->{action};
267
  $self->{action}  =~ s/( |-|,|\#)/_/g;
268

  
269 266
  #$self->{version} =  "2.6.1";                 # Old hardcoded but secure style
270 267
  open VERSION_FILE, "VERSION";                 # New but flexible code reads version from VERSION-file
271 268
  $self->{version} =  <VERSION_FILE>;

Auch abrufbar als: Unified diff