[Laravel] 화면에 지정된 정렬 조건을 페이지별로 반영합니다.
하고 싶은 일
환경
단계
1. 페이지 나누기 기능 만들기
우선 페이지 나누기 기능을 만듭니다.
Controller와 View만 편집하기 때문에 간단합니다.
(1) 컨트롤러 편집
모든 내용을 얻고 페이지당 5개의 데이터를 표시하는 상황은 다음과 같다.
pagenate () 괄호 안의 숫자를 임의의 숫자로 바꾸세요.
TestController.php
public function initialize(){
$test_forms = TestForm::all(); // テーブル:test_formsから全件を取得
$test_forms = TestForm::paginate(5); // 1ページに表示されるデータを5件に設定
return view('test_list', ['test_forms' => $test_forms]);
}
(2) 뷰 편집
보기에 페이지 나누기를 사용할 수 있는 설명을 추가합니다.
컨트롤러가 전달하는 변수는 화살표 연산자(->)의 왼쪽에 표시됩니다.
test_list.blade.php
{{ $test_forms->links() }}
2. 정렬 기능 추가
다음은 정렬 기능입니다.
전용 항목을 추가해야 하기 때문에 페이지를 나누는 것보다 시간이 좀 걸린다.
(1) 정렬 패키지 설치
분류 패키지kyslik/column-sortable를 설치합니다.
명령 실행 위치는 생성된 Laravel 항목 바로 아래에 있습니다.
> composer require kyslik/column-sortable
(2) 정렬 패키지의 구성 파일 만들기
다음은 설정 파일의 제작이다.
이곳의 명령이 유효한 장소도 프로젝트 바로 아래에 있습니다.
> php artisan vendor:publish --provider="Kyslik\ColumnSortable\ColumnSortableServiceProvider" --tag="config"
(3)config/app.php의 추적 기록
config/app.php의providers수조에서 다음과 같은 추적을 진행합니다.
이제 설치된 서비스 공급자 클래스를 읽을 것입니다.
config/app.php
'providers' => [
Kyslik\ColumnSortable\ColumnSortableServiceProvider::class, //追加
],
(4) 모델 편집
모델 클래스의 정렬 객체를 설명합니다.
public$sortable=에서 정렬 대상은 그룹 형식으로 되어 있습니다.
※ 요소는 뒤에 있는 순서대로 View가 나타납니다@sortablelink 일치()의 첫 번째 매개 변수입니다.
TestForm.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Kyslik\ColumnSortable\Sortable; // 追加
class TestForm2 extends Model
{
use Sortable; // 追加
public $sortable = ['id', 'name', 'created_at', 'updated_at']; // 追加
}
(5) 컨트롤러 편집
Controller의 "paginate ()"앞에 "sortable () ->"을 추가합니다.
TestController.php
public function initialize(){
$test_forms = TestForm::all();
$test_forms = TestForm::sortable()->paginate(5); // sortable()->を追記
return view('test_list', ['test_forms' => $test_forms]);
}
(6) 뷰 편집
① 분류 대상@sortablelink () 설명
test_list.blade.php
@section('content')
<table class = "table">
<thead>
<tr>
<td>@sortablelink('id', 'ID')
<td>@sortablelink('name', '名前')
<td>@sortablelink('created_at', '作成日')
<td>@sortablelink('updated_at', '更新日')
</thead>
@foreach($test_form2s as $test_form2)
<tbody>
<tr>
<td>{{ $test_form2->id }}
<td>{{ $test_form2->name }}
<td>{{ $test_form2->created_at }}
<td>{{ $test_form2->updated_at }}
</tbody>
@endforeach
</table>
② 페이지별로 적용되는 기술 변경 → [여기가 중요합니다!]페이지 나누기 기능을 만들 때 보기에서 설명한 "{{{{$test_forms->links()}}"를 다음과 같이 수정합니다.
"->appends(request()->query()->"를 추가하면 다음 페이지의 내용을 페이지에서 읽더라도 화면의 정렬 조건을 반영합니다.
※ appends의 s를 잊지 마세요.
test_list.blade.php
{{ $test_forms->appends(request()->query())->links() }}
참고 자료
Reference
이 문제에 관하여([Laravel] 화면에 지정된 정렬 조건을 페이지별로 반영합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/C_HERO/items/bad46a41d8a883704a14텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)