2011-08-22 13 views
7

Bir Katalizör newbie biraz değilim, ve çoklu zincirler aynı son nokta ('açıklama' altprogram) örn erişmeye almaya çalışıyorum:Birden çok zincirin, Katalizör'de aynı son noktayı paylaşmasına izin vermenin bir yolu var mı?

/object/fetch_by_id/*/description 
/object/fetch_by_name/*/description 
/object/fetch_by_xref/*/description 

ben yazmak zorunda kalmak istemiyoruz Örneğin 3 ayrı uç nokta için kodlayın ve bunun yerine uç noktasının üç farklı zincirleme eylem arasında paylaşılmasına izin verin. Bir backend API'sini ambalajlıyorum ve bu örnekte nesne farklı yöntemlerle alınabilir.

sub description : Chained('fetch_by_id','fetch_by_name','fetch_by_xref') PathPart('description') Args(0) ActionClass('REST') { 
    # code here 
} 

Ya bütün jenerik açıklama alt yordamı çağırmak her zincir için farklı açıklama subs yazabilirim, ama artık şık çözümler çok iyi olurdu:

ideal çözüm olurdu! Herhangi bir yardım büyük takdir edilmelidir!

cevap

5

Eğer böyle bir şey için mevcut subs üstlenmeden düşündünüz mü: Her iki uç nokta sorunu çözebilir Sen bulabilirsiniz

/object/fetch/id/*/description 
/object/fetch/name/*/description 
/object/fetch/xref/*/description 

ve Varolan kodunuzu aynı anda azaltın: 'getirme' iki argüman al: Arama yöntemi ve değer ve son olarak zincir açıklaması.

2

katalizör yolu kullanmak olacaktır $c->forward

sub description : Chained('fetch_by_id') PathPart('description') Args(0) ActionClass('REST') { 
    # code here 
} 

sub alias_1 : Chained('fetch_by_name') PathPart('description') Args(0) ActionClass('REST') { 
    my ($self, $c) = @_; 
    $c->forward('description'); 
} 
İlgili konular