Catalyst
Catalyst in Windows
perlのバージョンは5.8.9 (strawberryPerl)
5.10系だとCatalyst::Develの動作に不安が残る
>perl -v This is perl, v5.8.9 built for MSWin32-x86-multi-thread
Catalystのインストール
応答に自動でyesと返す。Catalystの確認は長いので、これを利用して放置したほうがよい
yes '' | perl -MCPAN -e 'install MODULE_NAME'
cpan cpan>install Task::Catalyst cpan>install Template cpan>install Encode cpan>install Catalyst cpan>install Catalyst::Devel cpan>install Catalyst::View::TT cpan>install DBD:: cpan>install Catalyst::Model::DBIC cpan>install Catalyst::Model::DBIC::Schema cpan>install DBIx::Class::Schema::Loader cpan>install DateTime::Format::MySQL ( cpan -i DateTime::Format::MySQL ) ppm install DBD-mysql
Catalystプロジェクトの作成
Windowsの場合、catalyst.plでなく、バッチのcatalystをつかう
>catalyst Hello >cd Hello
Catalystサーバーの実行
>perl script\hello_server.pl
http://localhost:3000 にアクセスするとテストページがみられる
Catalystビューの作成
>perl script\hello_create.pl view TT TT
Catalystモデルの作成
>perl script\hello_create.pl model DBIC DBIC dbic:SQLite2:D:/work/Hello/db/memo.db
Catalystモデル スキーマの作成
>perl script\blog_create.pl model DBIC DBIC::Schema Blog::Schema create=static dbi:mysql:[database] [user] [password]
>perl script\blog_create.pl model DB DBIC::Schema create=static dbi:mysql:[database] [user] [password]
DBICでのモデル情報入手とテンプレートへの渡し方
Root.pm
my $it = $c->model('DBIC::memo')->search({
id => { '>' => 0 },
},{
rows => 2,
});
my $page = $c->request->params->{page} || 1;
my $rs = $it->page($page);
my @lines;
while (my $cd = $rs->next){
push (@lines, $cd->title);
}
$c->stash->{iterator} = $rs;
$c->stash->{pager} = $rs->pager();
$c->stash->{memos} = [$rs->all];
index.tt
<ul>
[% FOREACH num=[pager.first_page .. pager.last_page] %]
[% IF num == pager.current_page %] <li><a href="?page=[%num%]">[[% num %]]</a></li>
[% ELSE %]<li><a href="?page=[%num%]">[[% num %]]</a></li>
[% END %]
[% END %]
</ul>
<ul>
[% FOREACH m = memos -%]
<li>
id : [% m.id %] <br />
title : [% m.title %] <br />
message : [% m.message %] <br />
</li>
[% END -%]
</ul>
package Blog::Schema::Result::Records;
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(user => "Blog::Schema::Result::Users",
'user_id');
DateTime::Format::MySQL