Package Data | |
---|---|
Maintainer Username: | joshbrw |
Maintainer Contact: | josh@joshbrown.me (Josh Brown) |
Package Create Date: | 2017-06-09 |
Package Last Update: | 2018-01-29 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-19 03:20:19 |
Package Statistics | |
---|---|
Total Downloads: | 3,031 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
The main purpose of this package is to provide a consistent object that represents all of the main values you have to take into account when paginating (i.e. Current Page, Per Page, Appends for the URLs).
This object can then be passed around to methods and used for less verbose method parameters.
composer require joshbrw/laravel-pagination-specification
config/app.php
under provider
:
Joshbrw\PaginationSpecification\PaginationSpecificationServiceProvider::class
php artisan vendor:publish --provider="Joshbrw\PaginationSpecification\PaginationSpecificationServiceProvider"
The class is bound into the container under the Joshbrw\PaginationSpecification\PaginationSpecification
interface, and can be overwritten/decorated if required.
For example, injecting into a Controller method:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Joshbrw\PaginationSpecification\PaginationSpecification;
class UserController extends Controller {
public function index(
Request $request,
PaginationSpecification $paginationSpecification,
UserRepository $userRepository
): View {
// Reads the `per_page` and `page` values from the request
$paginationSpecification->fromRequest($request);
// Set how many items we want per page
$paginationSpecification->setPerPage(30);
// This can now be passed around to other methods, which can typehint it as a dependency
return $userRepository->get($paginationSpecification);
}
}