Laravel 8의 배열에서 페이지 매김

안녕하세요, 오늘 저는 배열에서 laravel의 페이지네이션을 만드는 방법을 보여드릴 것입니다. 때때로 우리는 보내기 전에 데이터베이스나 API에서 얻은 쿼리 결과에서 일부 조작을 수행해야 하는 상황에 처할 수 있습니다. 어레이에 너무 많은 데이터가 포함된 경우 단일 페이지에 데이터를 채우는 것이 번거롭고 지저분할 수 있습니다.
라라벨은 쿼리 빌더와 데이터베이스의 Eloquent ORM 결과에 이미 통합되어 있는 페이지 매김을 위한 내장 기능을 가지고 있으며 다음과 같이 쉽게 호출할 수 있습니다.

$users = DB::table('users')->paginate(15);



하지만 배열에 적용할 수는 없으므로 기다리세요. 배열 컬렉션에서 고유한 페이지 매김을 만들 것입니다.

더 많은 업데이트를 받으려면 나를 팔로우하려면 내 버튼을 클릭하세요.

이 기사에서는 에 대한 이전 기사의 코드를 사용할 것입니다. 제가 원하는 것은 API(Github 공개 API)의 내용을 가져오고 일부 데이터를 추출하여 배열에 저장한 다음 배열에 페이지를 매긴 다음 전송하는 것입니다. 보기(프론트엔드)로 가져옵니다.

1단계: 앱 설정



laravel 앱이 실행되고 있지 않은 경우 이 를 클릭하고 laravel 앱 설정 방법에 대한 1단계를 확인할 수 있습니다.

2단계: 경로 추가



route/web.php로 이동하고 경로를 추가하여 페이지가 매겨진 배열을 봅니다.

Route::get('createpagination', [ProjectController::class, 'createPagination'])->name('createPagination');

3단계: 컨트롤러 메서드 만들기



app/Http/Controllers/ProjectController.php에 다음 메서드를 추가합니다.
ProjectController 클래스 전에 맨 위에 있는 클래스를 호출합니다.

use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;


그런 다음 이것을 클래스 안에 추가하십시오.


    private 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);
    }

    public function createPagination() 
    {
        $client = new Client(); //GuzzleHttp\Client
        // Github public API to view my public Repositories
        $url = "https://api.github.com/users/kingsconsult/repos";


        $response = $client->request('GET', $url, [
            'verify'  => false,
        ]);
        $responseBody = json_decode($response->getBody());

        // Extract key, name, URL and date the repo was created
        // and store it in an array
        $responseArray = [];
        foreach ($responseBody as $key => $views) {
            $array = array('id' => $key, 'name' => $views->name, 'url' => $views->url, 'created_at' => $views->created_at);
            array_push($responseArray, $array);
        }

        // use the paginate method that we created to paginate the array and also 
        // add the URL for the other pages using setPath() method
        $githubRepo = $this->paginate($responseArray)->setPath('/projects/createpagination');

        return view('projects.createpagination', compact('githubRepo'))
        ->with('i', (request()->input('page', 1) - 1) * 5)
        ;
    }


4단계: 보기 만들기



resources/views/projects로 이동하여 createpagination.blade.php라는 블레이드 파일을 만들고 다음 코드를 추가합니다.

@extends('layouts.app')

@section('content')

<style>

</style>
<div class="row mb-3">
    <div class="col-lg-12 margin-tb">
        <div class="text-center">
            <h2>Github Public Repository</h2>
            <a class="btn btn-primary" href="{{ route('projects.index') }}" title="Go back"> <i class="fas fa-backward fa-2x"></i> </a>
        </div>
    </div>
</div>

<div class="container-fluid mb-5" style="margin-bottom: 150px !important">
    <div class="row mr-4">

 <table class="table table-bordered table-responsive-lg">
    <tr>
        <th>No</th>
        <th>Name</th>
        <th>Url</th>
        <th>Date Created</th> 
    </tr>
    @foreach ($githubRepo as $repo)
    <tr>
        <td>{{ ++$i }}</td>
        <td>{{ $repo['name'] }}</td>
        <td>{{ $repo['url'] }}</td>
        <td>{{ $repo['created_at'] }}</td>
    </tr>
    @endforeach
</table>
{!! $githubRepo->links() !!}
    </div>
</div>


@endsection


5단계: 페이지 매김 링크에 부트스트랩 사용



페이지 매김에 Boostrap을 사용하겠다고 표시하지 않으면 페이지 매김 링크에 이상한 화살표가 표시되므로 페이지 매김 링크의 스타일을 지정하려면 app/Providers/AppServiceProvider.php로 이동하여 앱에 Bootstrap을 사용하도록 지시하십시오. 페이지 매김, 부팅 방법에 이것을 추가하십시오

Paginator::useBootstrap();



그리고 상단에 이것을 추가하십시오.

use Illuminate\Pagination\Paginator;



결과


내 기사를 더 보려면 나를 팔로우하세요. 의견, 제안 및 반응을 남길 수 있습니다.

좋은 웹페이지 즐겨찾기