我是一个perl&催化剂新手和我一直在玩Catalyst::DispatchType::Chained 我想知道是否有可能允许链式路径以不同的模式重新布线:
/hello/*/world/*
/world/*/hello/*
/hello/*
/world/*
或者您是否必须为每个路径设置唯一定义的端点?
答案 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/*
希望这有帮助。