diff --git a/lib/MyApp/Controller/Book.pm b/lib/MyApp/Controller/Book.pm index b6bed6d..3da99b2 100644 --- a/lib/MyApp/Controller/Book.pm +++ b/lib/MyApp/Controller/Book.pm @@ -5,9 +5,8 @@ use MyModel::Book; sub index ($self) { my $page_number = $self->param('page_number') // 1; my $book_model = MyModel::Book->new; - my $book_page = $book_model->get_page($page_number); + my $book_page = $book_model->get_page($page_number, $self->param('title_like')); $self->render( - book_count => $book_model->count_all, book_page => $book_page ); } diff --git a/lib/MyModel/Book.pm b/lib/MyModel/Book.pm index 82bf1e8..a00fa05 100644 --- a/lib/MyModel/Book.pm +++ b/lib/MyModel/Book.pm @@ -9,9 +9,12 @@ sub count_all ($self) { return $book_count; } -sub get_page ($self, $page_number = 1) { +sub get_page ($self, $page_number = 1, $title_like = undef) { + my $search_condition = (defined $title_like) + ? { "me.title" => { ilike => "\%$title_like\%" } } + : undef; my $rs = $self->schema->resultset('Book')->search_rs( - undef, + $search_condition, { prefetch => [ "author" ], order_by => [ "me.title " ], page => $page_number, diff --git a/templates/book/index.html.ep b/templates/book/index.html.ep index c02a6cd..c4d8b61 100644 --- a/templates/book/index.html.ep +++ b/templates/book/index.html.ep @@ -2,8 +2,14 @@ % title 'Books';

Book page

-Book count is <%= $book_count %>. +%= form_for book_page => begin +%= label_for title_like => 'Title like' +%= text_field title_like => flash('title_like') +%= submit_button "Search" +%= end +

+<%= $book_page->pager->total_entries %> books found.