Mojolicious::Plugin::Pager - Pagination plugin for Mojolicious
use Mojolicious::Lite; plugin "pager"; get "/" => sub { my $c = shift; $c->stash(total_items => 1431, items_per_page => 20); };
<ul class="pager"> % for my $page (pages_for $total_items / $items_per_page) { <li><%= pager_link $page %></li> % } </ul>
<ul class="pager"> % for my $page (pages_for $total_items / $items_per_page) { % my $url = url_with; $url->query->param(x => $page->{n}); <li><%= link_to "hey!", $url %></li> % } </ul>
Mojolicious::Plugin::Pager is a Mojolicious plugin for creating paged navigation, without getting in the way. There are other plugins which ship with complete markup, but this is often not the markup that you want.
Note that this plugin is currently EXPERIMENTAL.
$bytestream = $c->pager_link(\%page, @args); $bytestream = $c->pager_link(\%page, @args, sub { int(rand 100) });
Takes a %page hash and creates an anchor using "link_to" in Mojolicious::Controller. @args is passed on, without modification, to link_to(). The anchor generated has some classes added.
%page
@args
link_to()
See "pages_for" for detail about %page.
Examples output:
<a href="?page=2" class="prev" rel="prev">12</a> <a href="?page=1" class="first">1</a> <a href="?page=2" class="page">2</a> <a href="?page=3" class="active">3</a> <a href="?page=4" class="page">4</a> <a href="?page=5" class="page">5</a> <a href="?page=6" class="last">6</a> <a href="?page=3" class="next" rel="next">3</a>
@pages = $self->pages_for($total_pages); @pages = $self->pages_for(\%args) @pages = $self->pages_for;
Returns a list of %page hash-refs, that can be passed on to "pager_link".
Example %page:
{ n => 2, # page number current => 1, # if page number matches "page" query parameter first => 1, # if this is the first page last => 1, # if this is the last page next => 1, # if this is last, that brings you to the next page prev => 1, # if this is first, that brings you to the previous page }
%args can contain:
%args
current
Default to the "page" query param or "1".
items_per_page
Only useful unless total is specified. Default to 20.
total
size
The max number of pages to show in the pagination. Default to 8 + "Previous" and "Next" links.
The total number of pages. Default to "1" or...
$total = $args->{total_items} / $args->{items_per_page} $total = $c->stash('total_items') / $c->stash('items_per_page')
$app->plugin(pager => \%config);
Used to register this plugin and the "HELPERS" above. %config can be:
%config
classes
Used to set default class names, used by "pager_link".
Default:
{ current => "active", first => "first", last => "last", next => "next", prev => "prev", normal => "page", }
param_name
The query parameter that will be looked up to figure out which page you are on. Can also be set in "stash" in Mojolicious::Controller on each request under the name "page_param_name".
Default: "page"
Jan Henning Thorsen
Copyright (C) 2017, Jan Henning Thorsen
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
To install Mojolicious::Plugin::Pager, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::Pager
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::Pager
For more information on module installation, please visit the detailed CPAN module installation guide.