12

Mojoliciousフレームワークを使用するアプリケーションがあります。エラー応答のリストとそれに関連する追加の詳細を含むテーブルがデータベースにあります。DBテーブルを操作するために、対応するResultとResultsetを作成しました。結果セットを操作してエラーの詳細を取得するコントローラーもあります。

私の考えは、このコントローラーでアクションを呼び出して、データベースにクエリを実行することで(別のコントローラーによって)渡されたエラーの詳細を取得し、結果としてリソースを要求した環境に関するランタイム情報を追加することです。エラーが発生した場合は、応答を作成して、それを呼び出したコントローラーに戻ります。

あるコントローラーから別のコントローラーへの呼び出しに苦労しています。Mojoliciousでそれを行うにはどうすればよいですか?これを実現するためにコントローラーオブジェクト($self)を渡すことはできますが、エラー処理応答を呼び出し元のコントローラーから完全に分離するためのより良い方法はありますか?

4

1 に答える 1

10

Mojolicious では、オブジェクトを作成せずに、ヘルパーを使用してそのオブジェクトを渡したいと思うでしょうMojolicious::Controller:

あなたのメインクラスで:

sub startup {
    my $app = shift;

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

コントローラーで:

sub cool_action {
    my $c = shift;

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

ただし、何らかのアクションのために何か (データベースなど) を準備したい場合は、以下が役立つかもしれません:

複数のネストされたルートでコードを共有するには、[...]

PS: Mojolicious のこの機能は、以前はBridgesと呼ばれていました。それに応じて回答が更新されました。

于 2012-11-08T17:22:36.553 に答える