9

Mojolicious 프레임 워크를 사용하는 응용 프로그램이 있습니다. 데이터베이스에 오류 응답 및 추가 세부 정보 목록이있는 테이블이 있습니다. 나는 DB 테이블과 함께 작동하기 위해 해당 Result와 Resultset을 만들었습니다. 또한 Resultset과 상호 작용하여 오류에 대한 세부 정보를 얻는 컨트롤러가 있습니다.Mojolicious의 다른 컨트롤러에서 동작을 호출하는 방법은 무엇입니까?

내 생각은 데이터베이스를 쿼리하고 리소스를 요청한 환경에 대한 추가 기능 런타임 정보 (다른 컨트롤러에서)로 전달 된 오류의 세부 정보를 얻는이 컨트롤러의 작업을 호출하는 것입니다. 오류가 발생하여 응답을 작성하고 호출 한 제어기로 리턴하십시오.

한 컨트롤러에서 다른 컨트롤러로 통화하는 데 어려움을 겪고 있습니다. Mojolicious에서 어떻게합니까? 이 작업을 수행하려면 컨트롤러 개체 ($self)를 전달할 수 있지만 호출하는 컨트롤러에서 응답을 처리하는 데 오류가 완전히 분리되도록 더 나은 방법이 있습니까? 컨트롤러에서

sub startup { 
    my $app = shift; 

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

: 메인 클래스에서

: Mojolicious에서

+0

다음과 같이 할 수 있습니다 :'Your :: Controller :: Class :: action ($ self)'. '$ other = bless $ self ', :: Your :: Controller :: Class'; $ other-> action()'. 하지만 둘 다 허기 야. –

답변

7

, 당신은 아마가 밖으로 Mojolicious::Controller을 만들지 않고 도우미 주변에 객체를 전달하려는 것

sub cool_action { 
    my $c = shift; 

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

그러나 일부 작업 (예 : 데이터베이스)을 준비하려면 어쩌면 under 당신을 위해 도움이 될 것입니다 :

여러 중첩 된 경로와 코드를 공유하기 위해 당신이 [...]

는 PS가 할 수 Mojolicious의이 기능은 이전에 교량 선정됐다. 이에 따라 답변이 업데이트되었습니다.

+0

유용한 편집을 해주셔서 감사합니다. @Eugen! – memowe

관련 문제