mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
643 lines
67 KiB
HTML
643 lines
67 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Pagination — CodeIgniter 4.1.4 documentation</title><link rel="stylesheet" href="../_static/css/citheme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /><link rel="shortcut icon" href="../_static/favicon.ico"/>
|
||
<!--[if lt IE 9]>
|
||
<script src="../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/language_data.js"></script>
|
||
<script src="../_static/js/citheme.js"></script>
|
||
<script src="../_static/js/carbon.js"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="Publisher" href="publisher.html" />
|
||
<link rel="prev" title="Image Manipulation Class" href="images.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" style="background: #DD4814" >
|
||
<a href="../index.html"><img src="../_static/ci-logo-text.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/requirements.html">Server Requirements</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/credits.html">Credits</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/psr.html">PSR Compliance</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_composer.html">Composer Installation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_manual.html">Manual Installation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/running.html">Running Your App</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/upgrading.html">Upgrading From a Previous Version</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/troubleshooting.html">Troubleshooting</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/repositories.html">CodeIgniter Repositories</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">Build Your First Application</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/static_pages.html">Static pages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/news_section.html">News section</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/create_news_items.html">Create news items</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/conclusion.html">Conclusion</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">CodeIgniter4 Overview</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/structure.html">Application Structure</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/mvc.html">Models, Views, and Controllers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/autoloader.html">Autoloading Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/services.html">Services</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/factories.html">Factories</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/http.html">Working With HTTP Requests</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/security.html">Security Guidelines</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../general/index.html">General Topics</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/configuration.html">Configuration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/urls.html">CodeIgniter URLs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/helpers.html">Helper Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/common_functions.html">Global Functions and Constants</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/logging.html">Logging Information</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/errors.html">Error Handling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/caching.html">Web Page Caching</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/ajax.html">AJAX Requests</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/modules.html">Code Modules</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/managing_apps.html">Managing your Applications</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/environments.html">Handling Multiple Environments</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../incoming/index.html">Controllers and Routing</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/controllers.html">Controllers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/routing.html">URI Routing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/filters.html">Controller Filters</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/message.html">HTTP Messages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/request.html">Request Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/incomingrequest.html">IncomingRequest Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/content_negotiation.html">Content Negotiation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/methodspoofing.html">HTTP Method Spoofing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/restful.html">RESTful Resource Handling</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../outgoing/index.html">Building Responses</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/views.html">Views</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_cells.html">View Cells</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_renderer.html">View Renderer</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_layouts.html">View Layouts</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_parser.html">View Parser</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/table.html">HTML Table Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/response.html">HTTP Responses</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/api_responses.html">API Response Trait</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/localization.html">Localization</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outgoing/alternative_php.html">Alternate PHP Syntax for View Files</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Working With Databases</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/examples.html">Quick Start: Usage Examples</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/configuration.html">Database Configuration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/connecting.html">Connecting to a Database</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/queries.html">Running Queries</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/results.html">Generating Query Results</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/helpers.html">Query Helper Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/query_builder.html">Query Builder Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/transactions.html">Transactions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/metadata.html">Getting MetaData</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/call_function.html">Custom Function Calls</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/events.html">Database Events</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/utilities.html">Database Utilities</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../models/index.html">Modeling Data</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../models/model.html">Using CodeIgniter's Model</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../models/entities.html">Using Entity Classes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../dbmgmt/index.html">Managing Databases</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/forge.html">Database Manipulation with Database Forge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/migration.html">Database Migrations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/seeds.html">Database Seeding</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul class="current">
|
||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library Reference</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="caching.html">Caching Driver</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="cookies.html">Cookies</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="curlrequest.html">CURLRequest Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="encryption.html">Encryption Service</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="files.html">Working with Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="files.html#file-collections">File Collections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="honeypot.html">Honeypot Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="images.html">Image Manipulation Class</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Pagination</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="publisher.html">Publisher</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="sessions.html">Session Library</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="throttler.html">Throttler</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="time.html">Times and Dates</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="typography.html">Typography</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="uploaded_files.html">Working with Uploaded Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="uri.html">Working with URIs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="user_agent.html">User Agent Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="validation.html">Validation</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../helpers/index.html">Helpers</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/array_helper.html">Array Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/cookie_helper.html">Cookie Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/date_helper.html">Date Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/filesystem_helper.html">Filesystem Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/form_helper.html">Form Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/html_helper.html">HTML Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/inflector_helper.html">Inflector Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/number_helper.html">Number Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/security_helper.html">Security Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/test_helper.html">Test Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/text_helper.html">Text Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/url_helper.html">URL Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/xml_helper.html">XML Helper</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html">Testing</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/overview.html">Getting Started</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/database.html">Database</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/fabricator.html">Generating Data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/controllers.html">Controller Testing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/feature.html">HTTP Testing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/response.html">Testing Responses</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/benchmark.html">Benchmarking</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/debugging.html">Debugging Your Application</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/mocking.html">Mocking</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../cli/index.html">Command Line Usage</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli.html">Running via the Command Line</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_commands.html">Custom CLI Commands</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_generators.html">CLI Generators</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_library.html">CLI Library</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_request.html">CLIRequest Class</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../extending/index.html">Extending CodeIgniter</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/core_classes.html">Creating Core System Classes</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/common.html">Replacing Common Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/events.html">Events</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/basecontroller.html">Extending the Controller</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/authentication.html">Authentication</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/contributing.html">Contributing to CodeIgniter</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #DD4814" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../index.html">CodeIgniter</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../index.html" class="icon icon-home"></a> »</li>
|
||
<li><a href="index.html">Library Reference</a> »</li>
|
||
<li>Pagination</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="pagination">
|
||
<h1>Pagination<a class="headerlink" href="#pagination" title="Permalink to this headline"></a></h1>
|
||
<p>CodeIgniter provides a very simple, but flexible pagination library that is simple to theme, works with the model,
|
||
and capable of supporting multiple paginators on a single page.</p>
|
||
<div class="contents local topic" id="contents">
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="#loading-the-library" id="id1">Loading the Library</a></p></li>
|
||
<li><p><a class="reference internal" href="#paginating-database-results" id="id2">Paginating Database Results</a></p>
|
||
<ul>
|
||
<li><p><a class="reference internal" href="#paginating-multiple-results" id="id3">Paginating Multiple Results</a></p></li>
|
||
<li><p><a class="reference internal" href="#setting-page-manually" id="id4">Setting Page Manually</a></p></li>
|
||
<li><p><a class="reference internal" href="#specifying-the-uri-segment-for-page" id="id5">Specifying the URI Segment for Page</a></p></li>
|
||
<li><p><a class="reference internal" href="#manual-pagination" id="id6">Manual Pagination</a></p></li>
|
||
<li><p><a class="reference internal" href="#paginating-with-only-expected-queries" id="id7">Paginating with Only Expected Queries</a></p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p><a class="reference internal" href="#customizing-the-links" id="id8">Customizing the Links</a></p>
|
||
<ul>
|
||
<li><p><a class="reference internal" href="#view-configuration" id="id9">View Configuration</a></p></li>
|
||
<li><p><a class="reference internal" href="#creating-the-view" id="id10">Creating the View</a></p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<section id="loading-the-library">
|
||
<h2><a class="toc-backref" href="#id1">Loading the Library</a><a class="headerlink" href="#loading-the-library" title="Permalink to this headline"></a></h2>
|
||
<p>Like all services in CodeIgniter, it can be loaded via <code class="docutils literal notranslate"><span class="pre">Config\Services</span></code>, though you usually will not need
|
||
to load it manually:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$pager</span> <span class="o">=</span> <span class="nx">\Config\Services</span><span class="o">::</span><span class="na">pager</span><span class="p">();</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="paginating-database-results">
|
||
<h2><a class="toc-backref" href="#id2">Paginating Database Results</a><a class="headerlink" href="#paginating-database-results" title="Permalink to this headline"></a></h2>
|
||
<p>In most cases, you will be using the Pager library in order to paginate results that you retrieve from the database.
|
||
When using the <a class="reference internal" href="../models/model.html"><span class="doc">Model</span></a> class, you can use its built-in <code class="docutils literal notranslate"><span class="pre">paginate()</span></code> method to automatically
|
||
retrieve the current batch of results, as well as set up the Pager library so it’s ready to use in your controllers.
|
||
It even reads the current page it should display from the current URL via a <code class="docutils literal notranslate"><span class="pre">page=X</span></code> query variable.</p>
|
||
<p>To provide a paginated list of users in your application, your controller’s method would look something like:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Controllers</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\Controller</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">UserController</span> <span class="k">extends</span> <span class="nx">Controller</span>
|
||
<span class="p">{</span>
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">index</span><span class="p">()</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$model</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\App\Models\UserModel</span><span class="p">();</span>
|
||
|
||
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'users'</span> <span class="o">=></span> <span class="nv">$model</span><span class="o">-></span><span class="na">paginate</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span>
|
||
<span class="s1">'pager'</span> <span class="o">=></span> <span class="nv">$model</span><span class="o">-></span><span class="na">pager</span><span class="p">,</span>
|
||
<span class="p">];</span>
|
||
|
||
<span class="k">echo</span> <span class="nx">view</span><span class="p">(</span><span class="s1">'users/index'</span><span class="p">,</span> <span class="nv">$data</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>In this example, we first create a new instance of our UserModel. Then we populate the data to send to the view.
|
||
The first element is the results from the database, <strong>users</strong>, which is retrieved for the correct page, returning
|
||
10 users per page. The second item that must be sent to the view is the Pager instance itself. As a convenience,
|
||
the Model will hold on to the instance it used and store it in the public class variable, <strong>$pager</strong>. So, we grab
|
||
that and assign it to the $pager variable in the view.</p>
|
||
<p>Within the view, we then need to tell it where to display the resulting links:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">()</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>And that’s all it takes. The Pager class will render First and Last page links, as well as Next and Previous links
|
||
for any pages more than two pages on either side of the current page.</p>
|
||
<p>It is important to be aware that the library pattern for Next and Previous is different from what is used in the traditional way of paging results.</p>
|
||
<p>Next and Previous here is linked to the group of links to be displayed in the pagination structure, and not to the next or previous page of records.</p>
|
||
<p>If you prefer a simpler output, you can use the <code class="docutils literal notranslate"><span class="pre">simpleLinks()</span></code> method, which only uses “Older” and “Newer” links,
|
||
instead of the details pagination links:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">simpleLinks</span><span class="p">()</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Behind the scenes, the library loads a view file that determines how the links are formatted, making it simple to
|
||
modify to your needs. See below for details on how to completely customize the output.</p>
|
||
<section id="paginating-multiple-results">
|
||
<h3><a class="toc-backref" href="#id3">Paginating Multiple Results</a><a class="headerlink" href="#paginating-multiple-results" title="Permalink to this headline"></a></h3>
|
||
<p>If you need to provide links from two different result sets, you can pass group names to most of the pagination
|
||
methods to keep the data separate:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In the Controller</span>
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">index</span><span class="p">()</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$userModel</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\App\Models\UserModel</span><span class="p">();</span>
|
||
<span class="nv">$pageModel</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\App\Models\PageModel</span><span class="p">();</span>
|
||
|
||
<span class="nv">$data</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'users'</span> <span class="o">=></span> <span class="nv">$userModel</span><span class="o">-></span><span class="na">paginate</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="s1">'group1'</span><span class="p">),</span>
|
||
<span class="s1">'pages'</span> <span class="o">=></span> <span class="nv">$pageModel</span><span class="o">-></span><span class="na">paginate</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="s1">'group2'</span><span class="p">),</span>
|
||
<span class="s1">'pager'</span> <span class="o">=></span> <span class="nv">$userModel</span><span class="o">-></span><span class="na">pager</span><span class="p">,</span>
|
||
<span class="p">];</span>
|
||
|
||
<span class="k">echo</span> <span class="nx">view</span><span class="p">(</span><span class="s1">'users/index'</span><span class="p">,</span> <span class="nv">$data</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="c1">// In the views:</span>
|
||
<span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">(</span><span class="s1">'group1'</span><span class="p">)</span> <span class="cp">?></span>
|
||
<span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">simpleLinks</span><span class="p">(</span><span class="s1">'group2'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="setting-page-manually">
|
||
<h3><a class="toc-backref" href="#id4">Setting Page Manually</a><a class="headerlink" href="#setting-page-manually" title="Permalink to this headline"></a></h3>
|
||
<p>If you need to specify which page of results to return you can specify the page as the 3rd argument. This can be
|
||
handy when you have a different manner than the default $_GET varibable to control which page to show.</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$userModel</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\App\Models\UserModel</span><span class="p">();</span>
|
||
<span class="nv">$page</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
|
||
|
||
<span class="nv">$users</span> <span class="o">=</span> <span class="nv">$userModel</span><span class="o">-></span><span class="na">paginate</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="s1">'group1'</span><span class="p">,</span> <span class="nv">$page</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="specifying-the-uri-segment-for-page">
|
||
<h3><a class="toc-backref" href="#id5">Specifying the URI Segment for Page</a><a class="headerlink" href="#specifying-the-uri-segment-for-page" title="Permalink to this headline"></a></h3>
|
||
<p>It is also possible to use a URI segment for the page number, instead of the page query parameter. Simply specify the
|
||
segment number to use as the fourth argument. URIs generated by the pager would then look
|
||
like <em>https://domain.tld/model/[pageNumber]</em> instead of <em>https://domain.tld/model?page=[pageNumber]</em>.</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$users</span> <span class="o">=</span> <span class="nv">$userModel</span><span class="o">-></span><span class="na">paginate</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="s1">'group1'</span><span class="p">,</span> <span class="k">null</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Please note: <code class="docutils literal notranslate"><span class="pre">$segment</span></code> value cannot be greater than the number of URI segments plus 1.</p>
|
||
</section>
|
||
<section id="manual-pagination">
|
||
<h3><a class="toc-backref" href="#id6">Manual Pagination</a><a class="headerlink" href="#manual-pagination" title="Permalink to this headline"></a></h3>
|
||
<p>You may find times where you just need to create pagination based on known data. You can create links manually
|
||
with the <code class="docutils literal notranslate"><span class="pre">makeLinks()</span></code> method, which takes the current page, the number of results per page, and
|
||
the total number of items as the first, second, and third parameters, respectively:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">makeLinks</span><span class="p">(</span><span class="nv">$page</span><span class="p">,</span> <span class="nv">$perPage</span><span class="p">,</span> <span class="nv">$total</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This will, by default, display the links in the normal manner, as a series of links, but you can change the display
|
||
template used by passing in the name of the template as the fourth parameter. More details can be found in the following
|
||
sections.</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">makeLinks</span><span class="p">(</span><span class="nv">$page</span><span class="p">,</span> <span class="nv">$perPage</span><span class="p">,</span> <span class="nv">$total</span><span class="p">,</span> <span class="s1">'template_name'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>It is also possible to use a URI segment for the page number, instead of the page query parameter, as described in
|
||
the previous section. Specify the segment number to use as the fifth parameter to <code class="docutils literal notranslate"><span class="pre">makeLinks()</span></code>.</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">makeLinks</span><span class="p">(</span><span class="nv">$page</span><span class="p">,</span> <span class="nv">$perPage</span><span class="p">,</span> <span class="nv">$total</span><span class="p">,</span> <span class="s1">'template_name'</span><span class="p">,</span> <span class="nv">$segment</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Please note: <code class="docutils literal notranslate"><span class="pre">$segment</span></code> value cannot be greater than the number of URI segments plus 1.</p>
|
||
<p>If you in need to show many pagers on one page then additional parameter which will define a group could be helpful:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$pager</span> <span class="o">=</span> <span class="nx">service</span><span class="p">(</span><span class="s1">'pager'</span><span class="p">);</span>
|
||
<span class="nv">$pager</span><span class="o">-></span><span class="na">setPath</span><span class="p">(</span><span class="s1">'path/for/my-group'</span><span class="p">,</span> <span class="s1">'my-group'</span><span class="p">);</span> <span class="c1">// Additionally you could define path for every group.</span>
|
||
<span class="nv">$pager</span><span class="o">-></span><span class="na">makeLinks</span><span class="p">(</span><span class="nv">$page</span><span class="p">,</span> <span class="nv">$perPage</span><span class="p">,</span> <span class="nv">$total</span><span class="p">,</span> <span class="s1">'template_name'</span><span class="p">,</span> <span class="nv">$segment</span><span class="p">,</span> <span class="s1">'my-group'</span><span class="p">);</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Pagination library uses <em>page</em> query parameter for HTTP queries by default (if no group or <em>default</em> group name given) or <em>page_[groupName]</em> for custom group names.</p>
|
||
</section>
|
||
<section id="paginating-with-only-expected-queries">
|
||
<h3><a class="toc-backref" href="#id7">Paginating with Only Expected Queries</a><a class="headerlink" href="#paginating-with-only-expected-queries" title="Permalink to this headline"></a></h3>
|
||
<p>By default, all GET queries are shown in the pagination links.</p>
|
||
<p>For example, when accessing the URL <em>http://domain.tld?search=foo&order=asc&hello=i+am+here&page=2</em>, the page 3 link can be generated, along with the other links, as follows:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="k">echo</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">();</span>
|
||
<span class="c1">// Page 3 link: http://domain.tld?search=foo&order=asc&hello=i+am+here&page=3</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">only()</span></code> method allows you to limit this just to queries already expected:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="k">echo</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">only</span><span class="p">([</span><span class="s1">'search'</span><span class="p">,</span> <span class="s1">'order'</span><span class="p">])</span><span class="o">-></span><span class="na">links</span><span class="p">();</span>
|
||
<span class="c1">// Page 3 link: http://domain.tld?search=foo&order=asc&page=3</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The <em>page</em> query is enabled by default. And <code class="docutils literal notranslate"><span class="pre">only()</span></code> acts in all pagination links.</p>
|
||
</section>
|
||
</section>
|
||
<section id="customizing-the-links">
|
||
<h2><a class="toc-backref" href="#id8">Customizing the Links</a><a class="headerlink" href="#customizing-the-links" title="Permalink to this headline"></a></h2>
|
||
<section id="view-configuration">
|
||
<h3><a class="toc-backref" href="#id9">View Configuration</a><a class="headerlink" href="#view-configuration" title="Permalink to this headline"></a></h3>
|
||
<p>When the links are rendered out to the page, they use a view file to describe the HTML. You can easily change the view
|
||
that is used by editing <strong>app/Config/Pager.php</strong>:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="k">public</span> <span class="nv">$templates</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'default_full'</span> <span class="o">=></span> <span class="s1">'CodeIgniter\Pager\Views\default_full'</span><span class="p">,</span>
|
||
<span class="s1">'default_simple'</span> <span class="o">=></span> <span class="s1">'CodeIgniter\Pager\Views\default_simple'</span><span class="p">,</span>
|
||
<span class="p">];</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This setting stores the alias and <a class="reference internal" href="../outgoing/views.html"><span class="doc">namespaced view paths</span></a> for the view that
|
||
should be used. The <em>default_full</em> and <em>default_simple</em> views are used for the <code class="docutils literal notranslate"><span class="pre">links()</span></code> and <code class="docutils literal notranslate"><span class="pre">simpleLinks()</span></code>
|
||
methods, respectively. To change the way those are displayed application-wide, you could assign a new view here.</p>
|
||
<p>For example, say you create a new view file that works with the Foundation CSS framework, and
|
||
you place that file at <strong>app/Views/Pagers/foundation_full.php</strong>. Since the <strong>application</strong> directory is
|
||
namespaced as <code class="docutils literal notranslate"><span class="pre">App</span></code>, and all directories underneath it map directly to segments of the namespace, you can locate
|
||
the view file through it’s namespace:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="s1">'default_full'</span> <span class="o">=></span> <span class="s1">'App\Views\Pagers\foundation_full'</span><span class="p">,</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Since it is under the standard <strong>app/Views</strong> directory, though, you do not need to namespace it since the
|
||
<code class="docutils literal notranslate"><span class="pre">view()</span></code> method can locate it by filename. In that case, you can simply give the sub-directory and file name:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="s1">'default_full'</span> <span class="o">=></span> <span class="s1">'Pagers/foundation_full'</span><span class="p">,</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Once you have created the view and set it in the configuration, it will automatically be used. You don’t have to
|
||
replace the existing templates. You can create as many additional templates as you need in the configuration
|
||
file. A common situation would be needing different styles for the frontend and the backend of your application.</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="k">public</span> <span class="nv">$templates</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'default_full'</span> <span class="o">=></span> <span class="s1">'CodeIgniter\Pager\Views\default_full'</span><span class="p">,</span>
|
||
<span class="s1">'default_simple'</span> <span class="o">=></span> <span class="s1">'CodeIgniter\Pager\Views\default_simple'</span><span class="p">,</span>
|
||
<span class="s1">'front_full'</span> <span class="o">=></span> <span class="s1">'App\Views\Pagers\foundation_full'</span><span class="p">,</span>
|
||
<span class="p">];</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Once configured, you can specify it as a the last parameter in the <code class="docutils literal notranslate"><span class="pre">links()</span></code>, <code class="docutils literal notranslate"><span class="pre">simpleLinks()</span></code>, and <code class="docutils literal notranslate"><span class="pre">makeLinks()</span></code>
|
||
methods:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">(</span><span class="s1">'group1'</span><span class="p">,</span> <span class="s1">'front_full'</span><span class="p">)</span> <span class="cp">?></span>
|
||
<span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">simpleLinks</span><span class="p">(</span><span class="s1">'group2'</span><span class="p">,</span> <span class="s1">'front_full'</span><span class="p">)</span> <span class="cp">?></span>
|
||
<span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">makeLinks</span><span class="p">(</span><span class="nv">$page</span><span class="p">,</span> <span class="nv">$perPage</span><span class="p">,</span> <span class="nv">$total</span><span class="p">,</span> <span class="s1">'front_full'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="creating-the-view">
|
||
<h3><a class="toc-backref" href="#id10">Creating the View</a><a class="headerlink" href="#creating-the-view" title="Permalink to this headline"></a></h3>
|
||
<p>When you create a new view, you only need to create the code that is needed for creating the pagination links themselves.
|
||
You should not create unnecessary wrapping divs since it might be used in multiple places and you only limit their
|
||
usefulness. It is easiest to demonstrate creating a new view by showing you the existing default_full template:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">setSurroundCount</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="cp">?></span>
|
||
|
||
<span class="p"><</span><span class="nt">nav</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"Page navigation"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">ul</span> <span class="na">class</span><span class="o">=</span><span class="s">"pagination"</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">hasPrevious</span><span class="p">())</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getFirst</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.first'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.first'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getPrevious</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.previous'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.previous'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endif</span> <span class="cp">?></span>
|
||
|
||
<span class="cp"><?php</span> <span class="k">foreach</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">()</span> <span class="k">as</span> <span class="nv">$link</span><span class="p">)</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span> <span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'active'</span><span class="p">]</span> <span class="o">?</span> <span class="s1">'class="active"'</span> <span class="o">:</span> <span class="s1">''</span> <span class="cp">?></span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'uri'</span><span class="p">]</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endforeach</span> <span class="cp">?></span>
|
||
|
||
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">hasNext</span><span class="p">())</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getNext</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.next'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.next'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getLast</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.last'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.last'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endif</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">ul</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">nav</span><span class="p">></span>
|
||
</pre></div>
|
||
</div>
|
||
<p><strong>setSurroundCount()</strong></p>
|
||
<p>In the first line, the <code class="docutils literal notranslate"><span class="pre">setSurroundCount()</span></code> method specifies than we want to show two links to either side of
|
||
the current page link. The only parameter that it accepts is the number of links to show.</p>
|
||
<p><strong>hasPrevious()</strong> & <strong>hasNext()</strong></p>
|
||
<p>These methods return a boolean true if there are more links that can be displayed on either side of the current page,
|
||
based on the value passed to <code class="docutils literal notranslate"><span class="pre">setSurroundCount</span></code>. For example, let’s say we have 20 pages of data. The current
|
||
page is page 3. If the surrounding count is 2, then the following links would show up in the list: 1, 2, 3, 4, and 5.
|
||
Since the first link displayed is page one, <code class="docutils literal notranslate"><span class="pre">hasPrevious()</span></code> would return <strong>false</strong> since there is no page zero. However,
|
||
<code class="docutils literal notranslate"><span class="pre">hasNext()</span></code> would return <strong>true</strong> since there are 15 additional pages of results after page five.</p>
|
||
<p><strong>getPrevious()</strong> & <strong>getNext()</strong></p>
|
||
<p>These methods return the URL for the previous or next pages of results on either side of the numbered links. See the
|
||
previous paragraph for a full explanation.</p>
|
||
<p><strong>getFirst()</strong> & <strong>getLast()</strong></p>
|
||
<p>Much like <code class="docutils literal notranslate"><span class="pre">getPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">getNext()</span></code>, these methods return links to the first and last pages in the
|
||
result set.</p>
|
||
<p><strong>links()</strong></p>
|
||
<p>Returns an array of data about all of the numbered links. Each link’s array contains the uri for the link, the
|
||
title, which is just the number, and a boolean that tells whether the link is the current/active link or not:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="nv">$link</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="s1">'active'</span> <span class="o">=></span> <span class="k">false</span><span class="p">,</span>
|
||
<span class="s1">'uri'</span> <span class="o">=></span> <span class="s1">'http://example.com/foo?page=2'</span><span class="p">,</span>
|
||
<span class="s1">'title'</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="p">];</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>In the code presented for the standard pagination structure, the methods <code class="docutils literal notranslate"><span class="pre">getPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">getNext()</span></code> are used to obtain the links to the previous and next pagination groups respectively.</p>
|
||
<p>If you want to use the pagination structure where prev and next will be links to the previous and next pages based on the current page, just replace the <code class="docutils literal notranslate"><span class="pre">getPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">getNext()</span></code> methods with <code class="docutils literal notranslate"><span class="pre">getPreviousPage()</span></code> and <code class="docutils literal notranslate"><span class="pre">getNextPage()</span></code>, and the methods <code class="docutils literal notranslate"><span class="pre">hasPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">hasNext()</span></code> by <code class="docutils literal notranslate"><span class="pre">hasPreviousPage()</span></code> and <code class="docutils literal notranslate"><span class="pre">hasNextPage()</span></code> respectively.</p>
|
||
<p>See following an example with these changes:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><</span><span class="nx">nav</span> <span class="nx">aria</span><span class="o">-</span><span class="nx">label</span><span class="o">=</span><span class="s2">"<?= lang('Pager.pageNavigation') ?>"</span><span class="o">></span>
|
||
<span class="o"><</span><span class="nx">ul</span> <span class="nx">class</span><span class="o">=</span><span class="s2">"pagination"</span><span class="o">></span>
|
||
<span class="o"><?</span><span class="nx">php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">hasPreviousPage</span><span class="p">())</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getFirst</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.first'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.first'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getPreviousPage</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.previous'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.previous'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endif</span> <span class="cp">?></span>
|
||
|
||
<span class="cp"><?php</span> <span class="k">foreach</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">links</span><span class="p">()</span> <span class="k">as</span> <span class="nv">$link</span><span class="p">)</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span> <span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'active'</span><span class="p">]</span> <span class="o">?</span> <span class="s1">'class="active"'</span> <span class="o">:</span> <span class="s1">''</span> <span class="cp">?></span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'uri'</span><span class="p">]</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="cp"><?</span><span class="o">=</span> <span class="nv">$link</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endforeach</span> <span class="cp">?></span>
|
||
|
||
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$pager</span><span class="o">-></span><span class="na">hasNextPage</span><span class="p">())</span> <span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getNextPage</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.next'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.next'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$pager</span><span class="o">-></span><span class="na">getLast</span><span class="p">()</span> <span class="cp">?></span><span class="s">"</span> <span class="na">aria-label</span><span class="o">=</span><span class="s">"</span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.last'</span><span class="p">)</span> <span class="cp">?></span><span class="s">"</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">span</span> <span class="na">aria-hidden</span><span class="o">=</span><span class="s">"true"</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nx">lang</span><span class="p">(</span><span class="s1">'Pager.last'</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">span</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">a</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endif</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">ul</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">nav</span><span class="p">></span>
|
||
</pre></div>
|
||
</div>
|
||
<p><strong>hasPreviousPage()</strong> & <strong>hasNextPage()</strong></p>
|
||
<p>This method returns a boolean true if there are links to a page before and after, respectively, the current page being displayed.</p>
|
||
<p>Their difference to <code class="docutils literal notranslate"><span class="pre">hasPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">hasNext()</span></code> is that they are based on the current page while <code class="docutils literal notranslate"><span class="pre">hasPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">hasNext()</span></code> are based on the set of links to be displayed before and after the current page based on the value passed in <code class="docutils literal notranslate"><span class="pre">setSurroundCount</span></code>.</p>
|
||
<p><strong>getPreviousPage()</strong> & <strong>getNextPage()</strong></p>
|
||
<p>These methods return a URL for the previous and next pages in relation to the current page being displayed, unlike <code class="docutils literal notranslate"><span class="pre">getPrevious()</span></code> and <code class="docutils literal notranslate"><span class="pre">getNext()</span></code> that return the URL for the previous or next pages of results on either side of the numbered links. See the previous paragraph for a full explanation.</p>
|
||
<p>If you want page numbers instead of URLs, you can use the following methods:</p>
|
||
<p><strong>getPreviousPageNumber()</strong> & <strong>getNextPageNumber()</strong></p>
|
||
<p>These methods return the page number for the previous or next pages in relation to the current page being displayed.</p>
|
||
<p><strong>getFirstPageNumber()</strong> & <strong>getLastPageNumber()</strong></p>
|
||
<p>These methods return page numbers to the first and last pages in the
|
||
result set.</p>
|
||
<p><strong>getCurrentPageNumber()</strong></p>
|
||
<p>This method returns the page number of the current page.</p>
|
||
<p><strong>getPageCount()</strong></p>
|
||
<p>This method returns total number of pages.</p>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="images.html" class="btn btn-neutral float-left" title="Image Manipulation Class" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="publisher.html" class="btn btn-neutral float-right" title="Publisher" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2019-2021 CodeIgniter Foundation.
|
||
<span class="lastupdated">Last updated on Oct 23, 2021.
|
||
</span></p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(false);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |