読者です 読者をやめる 読者になる 読者になる

catalystによるアプリ一覧の取得

今度はデータベースから先日作成したmixiアプリの一覧を取得して表示する

まずはコントローラのひな型を作成

$ ./script/hoge_create.pl controller Top

「/home/hoge/lib/hoge/Controller/Top.pm」というファイルができる
catalystは「http://mydomain.com/top/index」にアクセスするとTop.pmのindexメソッド
にアクセスが行く模様
http://mydomain.com/」の場合、最初から存在する
「/home/hoge/lib/hoge/Controller/Root.pm」にアクセスが行く模様


「/home/hoge/lib/hoge/Controller/Root.pm」のindexメソッドに↓の記述を追加すると
http://mydomain.com/」へのアクセスがTop.pmのindexに転送される

$ vi /home/hoge/lib/hoge/Controller/Root.pm
sub index :Path :Args(0) {
    my ( $self, $c ) = @_;

    $c->forward('top/index');

}

$ vi /home/hoge/lib/hoge/Controller/Top.pm
sub index : Local {
    my ( $self, $c ) = @_;

    $c->stash->{apps}     =  [$c->model('db::MixiAppInfo')->all];
    $c->stash->{template} = 'top/index.tt';
}

次にモデルを作成

$ ./script/hoge_create.pl model db DBIC::Schema hoge::Schema create=static dbi:mysql:dbname mysqluser mysqlpass
↓らしい
model (モデル名) (親になるスキーマクラス) (作成するスキーマクラス) (スキーマクラスの生成方法) (DBIのデータベース接続設定)

最後にテンプレートを作成

$ ./script/hoge_create.pl view TT TT
$ mkdir /home/hoge/root/top
$ vi /home/hoge/root/top/index.tt
<table>
  <tr><th>app_id</th><th>app_name</th><th>category_name</th><th>user</th></tr>
[% FOREACH app IN apps -%]
  <tr>
    <td>[% app.app_id %]</td>
    <td>[% app.app_name %]</td>
    <td>[% app.category_name %]</td>
    <td>[% app.user %]</td>
  </tr>
[% END -%]
</table>

これで、とりあえず一覧は表示されるようになりました。
表の結合・ページャなどは長くなりそうなので、また次回