Hatena::Groupcatalyst

masaki@catalyst RSSフィード

Fork me on GitHub
 | 

2007-12-16

Catalyst で map.resources 的なことをするコントローラ

| 23:57 | Catalyst で map.resources 的なことをするコントローラ - masaki@catalyst を含むブックマーク はてなブックマーク - Catalyst で map.resources 的なことをするコントローラ - masaki@catalyst Catalyst で map.resources 的なことをするコントローラ - masaki@catalyst のブックマークコメント

charsbar: Chained Action?

http://b.hatena.ne.jp/entry/http://catalyst.g.hatena.ne.jp/ikasam_a/20071216/1197817077

内部実装は Chained Action を動的に作ってるだけです.が,Chained Action って Attribute 複雑だし汚いだろって個人的に思ってるので.

coderepos で書いてます.

雰囲気はこんな感じでわかってもらえるかな.

package MyApp::Controller::User;
use base 'Catalyst::Controller::Resources';

sub list   {} # GET /user
sub create {} # POST /user
sub show   {} # GET /user/{user_id}
sub update {} # PUT /user/{user_id}
sub delete {} # DELETE /user/{user_id}

# show, update, delete は $c->stash->{user_id} に argument 自動セットされる

list/create/show/update/delete という名前のサブルーチンを書いておくと,Controller::Resources の方で自動的に Attribute 付きアクションに変換する仕組みになっている.一応 /user/{user_id}/article/{article_id} といったネストをする機能も持たせてある.

typestertypester2007/12/17 18:01これいいですね。使いたいかも。

個人的にはstashで受け取るのはあんまり好きじゃなくて
my($self, $c, $user_id) = @_
とかコントローラにキャプチャしたの引数で渡ってきたらいいなーと思います。

ikasam_aikasam_a2007/12/17 18:08ありがとうございます.

自分も引数で渡ってきた方がいい派です.最初はその方針で作ろうと思ってたんですが,$c->req->args に値をセットするところに手を入れきれなくて断念してます.

coderepos にあげてあるので後は誰かが・・・w

 |