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