Manual pagination from array collection

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