Laravel 8의 배열에서 페이지 매김
라라벨은 쿼리 빌더와 데이터베이스의 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;
결과
내 기사를 더 보려면 나를 팔로우하세요. 의견, 제안 및 반응을 남길 수 있습니다.
Reference
이 문제에 관하여(Laravel 8의 배열에서 페이지 매김), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kingsconsult/pagination-from-array-in-laravel-8-4fg5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)