催化剂中的多链重复使用

时间:2014-10-02 01:33:45

标签: perl chaining catalyst

我是一个perl&催化剂新手和我一直在玩Catalyst::DispatchType::Chained 我想知道是否有可能允许链式路径以不同的模式重新布线:

/hello/*/world/*
/world/*/hello/*
/hello/*
/world/*

或者您是否必须为每个路径设置唯一定义的端点?

1 个答案:

答案 0 :(得分:2)

我认为这将是两个带有两个端点的链:

sub hello : PathPart("hello") : CaptureArgs(1) {# /hello/*/...} 
#-> 
sub world : chained "/hello" : PathPart("world") : Args(1) {# /hello/*/world/*}

sub world_base : PathPart("/world") : CaptureArgs(1) {# world/*/...}
#->
sub hello_world chained "world_base" PathPart("hello") Args(1) {# /world/*/hello/*}

但是,如果它们都做同样的事情,那么我建议只需转发到两种方法中你想要的方法。

转发控制器可能很奇怪,我通常在我的Main.pm中有一个方法。如果您需要进一步的帮助,请随时提出。

对“链”和“路径”要小心:链总是需要一个端点,即最后只有Args()的sub Chained,如上所述。

通过PathPart匹配路径。

例如

sub base Pathpart( "" ) : CaptureArgs(1) {}

sub hello Chained("base"): PathPart("hello") : Args(0){ 
# this is an endpoint
# path is /*/hello

sub hello_world : Chained("base") : PathPart("hello") : Args(1){
# another end to the chain started at base
# path is /*/hello/*

sub again : Chained("hello") : PathPart("") :CaptureArgs(1) {
# path is /*/hello/*/ ...
sub hello_universe : Chained("hello") : Pathpart("universe") : Args(1){
# another endpoint to another chain
# path is /*/hello/*/universe/*

希望这有帮助。