 |
|
前のページ 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モジュールの開発や、オープンソースのプロジェクトに参加している。
|
|
|
|