こんなControllerを書いた
Controller. - Lazy Programmer :-p
このまえCatalystをいじってたときはこんなのを書きました。
/entry (エントリ一覧表示)
/entry/create (フォーム表示)
/entry/create/cofirm (確認画面)
/entry/create/save (エントリ保存)
package Form::Web::Controller::Entry; use strict; use warnings; use base 'Catalyst::Controller'; =head1 NAME Form::Web::Controller::Entry - Catalyst Controller =head1 DESCRIPTION Catalyst Controller. =head1 METHODS =cut =head2 index =cut sub index : Private { my ( $self, $c ) = @_; $c->forward('list'); } =head2 list =cut sub list : Private { my ($self, $c) = @_; my $rs = $c->model('DBIC::Entry')->search_by_updatetime_desc( { user_id => $c->user->obj->id } ); $c->stash->{entries} = [$rs->all]; $c->stash->{template} = 'entry/list.tt'; } =head2 create =cut sub create : Local { my ($self, $c) = @_; if (!$c->req->param('.back')) { $c->session_expire_key('entry'); } $c->stash->{template} = 'entry/create.tt'; } =head2 create_confirm =cut sub create_confirm : Path('create/confirm') { my ($self, $c) = @_; $c->form( title => ['NOT_BLANK', ['JLENGTH', 0, 255]], body => ['NOT_BLANK', ['JLENGTH', 0, 2000]], ); if ($c->form->has_error) { $c->stash->{template} = 'entry/create.tt'; } else { $c->session->{entry} = { title => $c->req->param('title'), body => $c->req->param('body'), }; $c->stash->{template} = 'entry/create_confirm.tt'; } } =head2 create_save =cut sub create_save : Path('create/save') { my ($self, $c) = @_; if ($c->session->{entry}) { $c->model('DBIC')->schema->txn_do(sub{ $c->model('DBIC::Entry')->create({ %{$c->session->{entry}}, user_id => $c->user->obj->id, }); }); $c->session_expire_key(entry => -1); } $c->res->redirect($c->uri_for('/entry')); } =head1 AUTHOR ono takatoshi =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;
http://takatoshi.dyndns.org/trac/tktsh/browser/Form/trunk/lib/Form/Web/Controller/Entry.pm?rev=75