 |

|
使ってわかるCatalyst |
第7回:Ajaxで登録フォーム
著者:アドウェイズ 加藤 敦 2006/9/25
|
|
|
1 2 3 次のページ
|
 |
Ajaxからの登録(/ajax_regist)
|
今回のAjaxは、テキストボックスに値を入れて、フォーカスが外れたら登録するというものにしました(リスト24)。Ajaxからはajax_registが呼び出されますが、ajax_registは登録処理を行うだけなので、regist_executeにforwardします。また、このAjaxの場合はdivブロックを入れ換えるだけなので、bookmark_list.tt(リスト25)という、ブックマーク一覧部分だけを表示するテンプレートを指定しています。
リスト24:Ajaxからの登録
sub ajax_regist : Local{
my($self, $c) = @_;
$c->forward('regist_execute');
$c->stash->{template} = 'bookmark_list.tt';
}
リスト25:bookmark_list.tt(ブックマークの一覧部分)

(画像をクリックすると別ウィンドウに拡大図を表示します)
Ajaxでdivブロックを入れ換える処理を行う場合、その部分だけのテンプレートを作り、そのテンプレートは全体のテンプレートからインクルードするようにすると簡単です。
また今回はPlugin::Prototypeを使用してAjax部分を作成しています。header.tt(リスト26)の「c.prototype」から始まっている部分がその機能になり、テキストボックスが更新されると、ajax_regist/をリクエストして、bookmarkというidのdivブロックを変更しています。
リスト26:header.tt(フォーム入力部分)

(画像をクリックすると別ウィンドウに拡大図を表示します)
|
削除の実行(/delete_execute)
|
findでDBIx::Class::ResultSetオブジェクトを取得し、deleteメソッドを使うだけです(リスト27)。見つからなければ、エラーメッセージを表示します。
リスト27:削除の処理
sub delete_execute : Local {
my($self, $c) = @_;
if(my $r = $c->model('DBIC::bookmark')
->find({bookmark_id => $c->req->param('bookmark_id')})){
$r->delete();
}else{
$c->stash->{msg} = 'delete error - not found -';
}
$c->forward('index');
}
|
1 2 3 次のページ
|
|

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