2012-11-08 33 views
9

Mojolicious çerçevesini kullanan bir uygulamam var. Veritabanında, bir hata yanıtı listesi ve onunla ilişkili ek ayrıntılar içeren bir tablo var. DB tablosuyla çalışmak için karşılık gelen Sonuç ve Sonuç Belgesi oluşturdum. Hata ile ilgili ayrıntılar için Resultset ile etkileşim kurarak bir denetleyici de vardır.Mojolicious'de başka bir kontrol cihazında nasıl hareket edilir?

Fikrim, bu denetleyicide, veritabanını sorgulayarak (başka bir denetleyici tarafından) iletilen hatanın ayrıntılarını alacak olan bir eylemi çağırmak, kaynak için istenen ortamla ilgili çalışma zamanı bilgilerini ekleyin. Bu, hatayla sonuçlandı, bir yanıt oluşturdu ve buna çağrı yapan denetleyiciye geri döndü.

Bir denetleyiciden diğerine çağrıyla mücadele ediyorum. Mojolicious'da nasıl yaparım? Bunu gerçekleştirmek için denetleyici nesnesini ($self) geçirebilirim, ancak bunu yapmak için daha iyi bir yol var mı? Böylece, arama denetleyiciden tüm hata işleme yanıtımı tamamen ayırdım. Kumandanızda olarak

sub startup { 
    my $app = shift; 

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

: ana sınıfta

: Mojolicious yılında

+0

Şunları yapabilirsiniz: :: Sizin :: Denetleyici :: Sınıf :: eylem ($ self). Ayrıca başarabilirsiniz: $ $ = $ self $ 'nı,' :: Controller :: Class '; $ Diğer-> eylem() '. Ama ikisi de hugy –

cevap

7

, muhtemelen bunun dışında bir Mojolicious::Controller oluşturmadan yardımcı etrafında o nesneyi geçmek isteyeyim

sub cool_action { 
    my $c = shift; 

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

Ancak, bazı eylemler için bir şeyler (örneğin veritabanları) hazırlamak isterseniz, belki under sizin için yararlıdır:

birden iç içe yolları kullanarak kod paylaşmak için [...]

PS edebilirsiniz: Mojolicious Bu özellik daha önce Bridges seçildi. Cevap buna göre güncellendi.

+0

Yararlı düzenleme için teşekkürler, @Eugen! – memowe