Frage

Ich möchte zwei spezielle Methoden:

  • ein, die für alle URLs läuft
  • eine, die nur für einen bestimmten Pfad läuft ( / admin )

Ich dachte, das allgemeinste wäre mit begin und das Verfahren für / admin würde auto verwenden. Zum Beispiel in diesem beide Katalysator-Controller:

package MyApp::Controller::Root;

sub begin :Private {
    my ($self, $c) = @_;

    $c->log->debug('Run for all URLs');
}

[...]

package MyApp::Controller::Admin;

sub auto :Private {
    my ($self, $c) = @_;

    $c->log->debug('Run for /admin only');
}

Aber dies nicht erreicht, was ich will. Was ist die richtige Lösung?

Bearbeiten : Das Problem ist, dass Addmin::auto() nie aufgerufen wird, nicht, wenn ich Zugriff auf / admin oder / admin /

Nach mehr Tests wird auto nie genannt. Ich habe versucht, Auto an verschiedenen Orten zu bringen, wird es nie genannt.

War es hilfreich?

Lösung 2

Das Problem war eigentlich folgendes: beide Controller hatte die folgende Zeile:

__PACKAGE__->config->{namespace} = '';

Dies verhindert die automatische Funktion in Admin.pm auslösen

Andere Tipps

Es gibt keinen offensichtlichen Grund, warum das, was Sie beschrieben haben nicht das tun, was Sie benötigen. Das wäre der richtige Weg, es zu tun.

Das Protokoll sollte den Versand Weg zeigen, und ob Ihre Anfrage durch diese Aktionen weitergeleitet wurde oder nicht. Wenn nicht, wird es Ihnen sagen, wie es gehandhabt wird.

‚;‘

Die zweite Zeile jedes Unter sollte mit einem beendet werden. Ich gehe davon aus, dass ein Tippfehler in SO, nicht den Original-Code.

Haben Sie eine Aktion in-Controller :: Admin beginnen? Wie RET sagt, haben die Art und Weise Sie die Dinge beschrieben es sollte gut funktionieren; die einzige Einschränkung mit einem „global beginnt“ ist, dass, wenn Sie ein in einem anderen Controller beginnen setzen wird es „Schatten“ die global, da nur eine BEGIN pro Aktion ausgeführt, und es ist die „spezifischste“ ein (längste in Bezug auf von privatem Pfad-Namespace).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top