ご挨拶、
私はCatalystを初めて使用し、ディスパッチロジックを実装しようとしています。
私のデータベースにはアイテムのテーブルがあり、それぞれに一意のurl_part
フィールドがあり、すべてのアイテムには同じテーブルに親があり、ツリー構造になっています。baz
の子がルートの子である場合、URLbar
をこのオブジェクトにマップする必要があります。ツリーは任意の深さにすることができ、ユーザーはブランチまたはリーフに関係なく、任意のノードにアクセスできる必要があります。foo
/foo/bar/baz
チェーンディスパッチャのドキュメントを調べてきましたが、これで自分が望むことができるかどうかわかりません。チェーンディスパッチャーの各ステップには属性の定義済みの名前が必要なようPathPart
ですが、URLはデータベース構造によってのみ決定されるようにしたいと思います。
これは既存のCatalystディスパッチャーで簡単に実装できますか、それとも独自のディスパッチクラスを作成する必要がありますか?
ありがとう!:)
ETA:
空のArgs
属性を使用して、任意の数の引数をキャッチできることがわかりました。以下は、ルートの下のすべてのリクエストを正常にキャッチしているようです。
sub default :Path :Args() {
my ( $self, $c ) = @_;
my $path = $c->request->path;
$c->response->status( 200 );
$c->response->body( "Your path is $path" );
}
そこから手動でパスを解析して必要なものを取得できますが、これが私が求めていることを達成するための最良の方法であるかどうかはわかりません。