PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Wednesday, November 16, 2022

[FIXED] How add manual pagination in Laravel

 November 16, 2022     laravel, laravel-6, php     No comments   

Issue

I am beginner in Laravel and php. I try show list articles with pagination.

I have controller:

public function poradnik(Request $request)
    {
        MetaTag::set('title', 'name.pl | xxxxx');
        MetaTag::set('description', 'name.pl | xxxxx');
        MetaTag::set('keywords', 'name.pl | xxxxx');

        $data = [
            [
                'title' => 'Strona Internetowa, jak Odnieść Sukces?',
                'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
                'url' => 'poradnik-strona-internetowa-jak-odniesc-sukces'
            ],
            [
                'title' => 'Znaczenie Linków w Budowaniu Pozycji Strony',
                'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
                'url' => 'poradnik-znaczenie-linkow-w-budowaniu-pozycji-strony'
            ],
            [
                'title' => 'Planowanie Sklepu Internetowego',
                'desc' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vestibulum luctus ex. Morbi sollicitudin condimentum ante, vel euismod quam rhoncus nec. Ut consectetur convallis libero, ut venenatis libero sagittis ac. Sed hendrerit risus quis luctus dignissim. Morbi tincidunt tempus enim, at volutpat leo placerat sed. Aliquam pharetra dolor faucibus, posuere lacus sit amet, venenatis nulla...',
                'url' => 'poradnik-planowanie-sklepu-internetowego'
            ]
.........
        ];

        return view('frontend.poradnik.index', ['data' => $data]);
    }

(243 records)

View:

@foreach($data as $value)
                        <li class="guide-item">
                            <a href="{{ $value['www'] }}">
                                <h2>{{ $value['title'] }}</h2></a>
                            <a href="{{ $value['www'] }}"><p
                                    class="justify-text">
                                    {{ $value['desc'] }}
                                </p></a>
                        </li>
                    @endforeach

<nav aria-label="Page navigation">
                    <ul class="pagination">
                        <li class="page-item"><a class="page-link" href="#" aria-label="Previous"></a></li>
                        <li class="page-item"><a class="page-link" href="#">1</a></li>
                        <li class="page-item"><a class="page-link" href="#">2</a></li>
                        <li class="page-item"><a class="page-link" href="#">3</a></li>
                        <li class="page-item"><a class="page-link" href="#" aria-label="Next"></a></li>
                    </ul>
                </nav>

How can I add paginate to my code? I need limit 4 records per page. I use Laravel 6 :)


Solution

You can use LengthAwarePaginator to achieve this.

Example for your case:

$currentPage = $request->page ?? 1;
$itemsPerPage = 4;

// You should manually make a slice of array for current page
$items = array_slice($data, ($currentPage - 1) * $itemsPerPage, $itemsPerPage);
$pagination = new LengthAwarePaginator($items, count($data), $itemsPerPage, $currentPage);

Then pass this LengthAwarePaginator instance in parameters array when calling view like this:

return view('frontend.poradnik.index', ['data' => $pagination]);

To use it in your view, iterate over $data to render your items.

@foreach($data as $value)
    {{-- Your HTML code here, e.g. show title --}}
    <h1>{{ $value['title'] }}</h1>
@endforeach

To show pagination, use links() method like this:

{{ $data->links() }}


Answered By - LordOfLabVIEW
Answer Checked By - Clifford M. (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing