Here, we will create PaginationController with two method, one for call route and another for creating custom pagination. So let's add controller as like bellow:
Create controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
class PaginationController extends Controller
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function index()
{
$myArray = [
['id'=>1, 'title'=>'Laravel CRUD'],
['id'=>2, 'title'=>'Laravel Ajax CRUD'],
['id'=>3, 'title'=>'Laravel CORS Middleware'],
['id'=>4, 'title'=>'Laravel Autocomplete'],
['id'=>5, 'title'=>'Laravel Image Upload'],
['id'=>6, 'title'=>'Laravel Ajax Request'],
['id'=>7, 'title'=>'Laravel Multiple Image Upload'],
['id'=>8, 'title'=>'Laravel Ckeditor'],
['id'=>9, 'title'=>'Laravel Rest API'],
['id'=>10, 'title'=>'Laravel Pagination'],
];
$data = $this->paginate($myArray);
return view('paginate', compact('data'));
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}
Create View File
Here, we just need to create blade file to print data. so let's create simple blade file as like bellow:
app/Http/Controllers/PaginationController.php
Read Also: How to Define Fallback Routes in Laravel?
<div class="container">
<table class="table table-bordered">
<tr>
<th>Id</th>
<th>Title</th>
</tr>
@foreach($data as $post)
<tr>
<td>{{ $post->id }}</td>
<td>{{ $post->title }}</td>
</tr>
@endforeach
</table>
</div>
{{ $data->links() }}
Now you can run and check.
https://www.itsolutionstuff.com/post/how-to-create-pagination-from-array-in-laravelexample.html