 |
|
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アクション

(画像をクリックすると別ウィンドウに拡大図を表示します)
|
トップページの表示
|
トップページにはブックマークのリストを表示するので、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モジュールの開発や、オープンソースのプロジェクトに参加している。
|
|
|
|