こんな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