9

Ich habe eine Anwendung, die das Mojolicious-Framework verwendet. Ich habe eine Tabelle in der Datenbank, die eine Liste der Fehlerreaktion und zusätzliche Details enthält. Ich habe entsprechendes Result und Resultset erstellt, um mit der DB-Tabelle zu arbeiten. Es gibt auch einen Controller, um Details über den Fehler zu erhalten, indem er mit dem Resultset interagiert.Wie ruft man in einem anderen Controller in Mojolicious die Aktion auf?

Meine Idee ist, rufen Sie eine Aktion in diesem Controller, der die Details des Fehlers erhalten würde, die von einem anderen Controller übergeben wird, durch Abfrage der Datenbank, Add-In-Laufzeitinformationen über die Umgebung, die für die Ressource angefordert Das führte zu dem Fehler, eine Antwort erstellen und zu dem Controller zurückgeben, der es aufgerufen hat.

Ich habe Probleme mit dem Anruf von einem Controller zum anderen. Wie mache ich das in Mojolicious? Ich kann das Controller-Objekt übergeben ($self), um dies zu erreichen, aber gibt es einen besseren Weg, dies zu tun, so dass ich vollständig meine Fehlerbehandlung Antwort von der rufenden Controller trennen?

+0

Sie können: 'Ihre :: Controller :: Class :: action ($ self)'. Sie können auch: $ other = segne $ self, 'Your :: Controller :: Class'; $ other-> action() '. Aber beide sind huggy –

Antwort

7

In Mojolicious, würden Sie wahrscheinlich das Objekt herum mit einem Helfer übergeben wollen ohne ein Mojolicious::Controller aus ihm zu schaffen:

in der Hauptklasse:

sub startup { 
    my $app = shift; 

    # ... 
    my $thing = Thing->new(foo => 42); 
    $app->helper(thing => sub {$thing}); 
} 

In Ihrem Controller:

sub cool_action { 
    my $c = shift; 

    # ... 
    my $foo = $c->thing->gimmeh_foo('bar'); 
    # ... 
} 

Wenn Sie jedoch etwas (z. B. Datenbanken) für einige Aktionen vorbereiten möchten, vielleicht under ist für Sie hilfreich:

Um Code mit mehreren verschachtelten Routen zu teilen, können Sie [...]

PS: Diese Funktion von Mojolicious zuvor Bridges genannt wurde. Antwort aktualisiert entsprechend.

+0

Danke für die nützliche Bearbeitung, @Eugen! – memowe

Verwandte Themen