日曜日, 12月 31, 2006

[Linux] Catalystデモから勉強したこと(Chain)

CPANのCatalyst/DispatchType/Chaine
の要約とテストからのメモ.

Chained属性では,準備した関数間の連結(前に来る関数名を指定)を行います(引数を省略した場合は"/"扱い).またPathPart属性でその後に来る実URLを記述します(引数無しは関数名を実URLとして扱います).

このときChained('.')と指定することができ,その時点でのコントローラでの名前空間パスが入る,,らしいが使い方がいまいち不明.



CaptureArgs属性で,内部処理に使う後続URLパスのデータ個数を定義(個数を指定しない場合は無制限(に受け取る))でき,その値を受け取ることができます.Args属性は(CaptureArgs属性と近しいですが)chianがその関数で終了するときに利用します(下の例では,値の受け渡しは@_で行われている).

sub wiki : PathPart('wiki') Chained('/') CaptureArgs(1) {
my ( $self, $c, $page_name ) = @_;
~snip~
}


コンテキスト経由で値を処理する場合はCaptureArgsとArgsでは格納場所が違い,前者は$c->request->captures->[$level]であり($levelにはそれまでキャプチャされたURLパス文字列が配列格納される),後者は$c->request->argumentsに格納される.

またとても参考になる(より複雑な)例はこちら

0 件のコメント: