TOPシステム開発> コントローラーの作成
まるごとPerl!
使ってわかるCatalyst

第6回:登録フォームの作成
著者:アドウェイズ  加藤 敦   2006/9/22
1   2  次のページ
コントローラーの作成

   さて、コントローラーを作っていきます。まずURIの設計を行いましょう。パスに対して、アプリケーションの振舞を決めます(表4)。
パス 振舞
/ トップページの表示
/regist 登録フォームを表示
/delete 削除確認画面表示
/edit 編集フォームの表示
/regist_execute 登録の実行
/ajax_regist ajaxからの登録
/delete_execute 削除の実行
/edit_execute 編集の実行

表4:URIの設計

   全てのアクションが、「/」から始まっています。「コントローラークラス」の項で述べたように、ルートパスのアクションはBookmark::Controller::Rootに実装します。


endアクションの編集

   「Catalystの動作フロー」で説明したように、endアクションはアクションの最後に呼ばれます。ここにView::TTとPlugin::FillInFormのためのコードを書きます(リスト18)。stashのfdatを、フォームに埋め込むために使うハッシュリファレンスのキーとします。fdatが空の場合は、$c->request->parametersが使われます。

リスト18:endアクション
endアクション
(画像をクリックすると別ウィンドウに拡大図を表示します)


トップページの表示

   トップページにはブックマークのリストを表示するので、modelからブックマークの一覧を取得しています(リスト19)。モデルとしてDBIC::Schemaを使った場合、modelメソッドにbookmark_create.plの第2引数(Modelのクラス名)とテーブル名を::でつないだものを引数にすると(リスト20-1)、DBIx::Class::ResultSetのメソッドを使えます(リスト20-2)。

リスト19:トップページの表示
sub index : Private {
   my ( $self, $c ) = @_;
   $c->stash->{bookmark} = [$c->model('DBIC::bookmark')->all];
   $c->stash->{template} = 'index.tt';
}

リスト20:モデルの作成とコントローラーでの指定
モデルの作成とコントローラーでの指定
(画像をクリックすると別ウィンドウに拡大図を表示します)

   allメソッドは全データを取得し、[{フィールド名=>値},…]の構造のハッシュリファレンスの配列を返します。その後は、テンプレートを指定しています。


登録フォームの表示(/regist)

sub regist : Local {}

   これだけです。テンプレートすら指定していません。

   View::TTはテンプレートファイルが指定されていない場合、アクションの名前+設定された拡張子を使います。今回の場合は、regist.ttが自動的に使われます。

   indexアクションでわざわざ指定したのは、indexを登録終了時や編集終了時など、別のアクションの最後に呼び出したいからです。その場合、自動的に選ばれるテンプレートでは都合が悪いのです。

1   2  次のページ

株式会社アドウェイズ 加藤 敦
著者プロフィール
株式会社アドウェイズ   加藤 敦
アフィリエイトシステムやモバイルサイトの構築などを経て、現在、技術マネージャーとして新規サービスの設計、システムの標準化などに携わる。個人的にCPANモジュールの開発や、オープンソースのプロジェクトに参加している。


INDEX
第6回:登録フォームの作成
コントローラーの作成
  削除確認画面の表示(/delete)