PerlのWAF Amon2で検索窓をつくってみる
Perlを勉強するかたわらAmon2でチュートリアル的なブログサイトを作っております。 さくらのVPSで。
さて、ブログを含めインターネットでよく見かける検索窓を自分のブログサイトにもほしくなりました。 そのあれをつくってみます。
HTML(index.tx)
<form action="/search"> <input type="text" name="search_word"> <button type="submit" id="search">Search</button> </form>
こんなの。
サーバー側(コントローラー)
package MyApp::Web::C::Root; sub search { my ( $class, $c) = @_; # 検索語を取得・・・① my $search_word = $c->req->parameters->{search_word}; # LIKE 検索・・・② my @matches = $c->db->search('schedules', [ 'body', {'like' => "%$search_word%"} ]); return $c->render('index.tx', { schedules => \@matches }); }
コメント
①
Plack::Requestのparameters
メソッドがAmon2の$cオブジェクトから使える。
HTMLに記述した<input name="search_word"></input>
フィールドの入力を取得するためには、$c->req->parameters->{search_word}
とすればいいです。
参考リンク(CPAN) Plack::Request - search.cpan.org
② Amon2の標準で使えるO/RマッパーTengを使ってLIKE検索する。 こちらのサイトを参考にさせていただきました。 とてもわかりやすいリファレンスです。
PerlのO/RマッパーTengの簡単なリファレンス | UCWD-Studio - @matsuoka_UCWDjp 's Private Projects.
DEMO
実際のデモサイトです。 つくりかけのあれこれが散らかっていますが気にしないでください。 Scheduler