 |
|
| 前のページ 1 2 |
 |
| 削除確認画面の表示(/delete) |
findメソッドを使ってDBIx::Class::ResultSetオブジェクトを取得し、get_columnsメソッドでハッシュを取得しています(リスト21)。 リスト21:削除確認画面の表示
 (画像をクリックすると別ウィンドウに拡大図を表示します)
|
| 編集フォームの表示(/edit) |
することは/deleteと一緒なので、forwardしています(リスト22)。違いは、stashのfdatに値を入れるところだけです。こうすることで、自動的にフォームに値が入ります。
リスト22:編集フォームの表示
sub edit : Local { my( $self, $c ) = @_; $c->stash->{fdat} = $c->forward('delete'); }
|
| 登録の実行(/regist_execute) |
modelを使ってURLがすでに存在するかチェックし、存在しなければ、URLの存在確認のためにLWP::Simpleで内容を取得します(リスト23)。内容が取得できなければエラーです。フォームにタイトルが設定されていない場合は、取得したHTMLのtitleをタイトルとし、titleが無い場合は、'no title'という文字列を代わりに入れておきます。後は、modelからcreateメソッドで登録します。登録が終われば最初に戻るので、indexにforwardしています。
リスト23:登録の処理
sub regist_execute : Local{ my($self, $c) = @_; my %data; foreach my $k (qw/url title comment/){ $data{$k} = $c->req->param($k) || ''; } if(my $url = $data{url}){ if($c->model('DBIC::bookmark')->find({url => $url})){ $c->stash->{msg} = 'Already exists: ' . $url; }elsif(my $content = LWP::Simple::get($url)){ $c->stash->{msg} = "Success: " . $url; unless($data{title}){ my($title) = $content =~m {<title>([^<]*)</title>}i; $data{title} = Jcode::jcode($title)->utf8; } $data{title} ||= 'no title'; $c->model('DBIC::bookmark')->create(\%data); }else{ $c->stash->{msg} = 'Error: cannot get contents (' . $url. ')'; } } $c->forward('index'); }
|
前のページ 1 2
|
 |

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