[pagination] 다른 GET 매개 변수를 포함하지 않는 Laravel 페이지 매김 링크

나는 Laravel 4의 Pagination 클래스와 함께 Eloquent를 사용하고 있습니다.

문제점 : URL에 일부 GET 매개 변수가있는 경우 (예 http://site.com/users?gender=female&body=hot🙂 생성 된 페이지 매김 링크는 page매개 변수 만 포함하고 다른 것은 포함 하지 않습니다.

블레이드 템플릿

{{ $users->link() }}

이에 대한 ->append()기능이 있지만 GET 매개 변수가 몇 개 있는지 모를 때 블레이드 템플릿을 엉망으로 append()만드는 if코드 덩어리없이 페이지가 매겨진 링크에 다른 GET 매개 변수를 포함하는 데 어떻게 사용할 수 있습니까?



답변

편집 : Mehdi의 답변에 대한 Connor의 의견은이 작업을 수행하는 데 필요합니다. 그들의 설명에 대해 둘 다 감사합니다.

->appends()배열을 매개 변수로 받아 들일 수 있습니다. 전달 Input::except('page')하면 트릭을 수행해야합니다.

예:

return view('manage/users', [
    'users' => $users->appends(Input::except('page'))
]);


답변

Laravel 5에서이 코드를 사용해야한다고 생각합니다. 또한 이것은 매개 변수 page뿐만 아니라 다른 매개 변수에서도 작동합니다 .

$users->appends(request()->input())->links();

개인적 Facades으로 가능한 한 많이 사용하지 않으려 고 노력합니다 . 전역 도우미 함수를 사용하는 것은 코드가 적고 훨씬 우아합니다.

최신 정보:

InputLaravel v6 +에서 더 이상 사용되지 않으므로 Facade를 사용하지 마십시오.


답변

주의Input::all()는 이전 포함, ?page=열려 각 페이지에 또 다시 값을!
예를 들어 ?page=1다음 페이지를 열고 다음 페이지를 열면 열릴 것입니다. ?page=1&page=2
따라서 마지막 값 페이지가 보는 페이지가됩니다! 보고 싶은 페이지가 아닙니다.

해결책 : 사용 Input::except(array('page'))


답변

당신은 사용할 수 있습니다

->appends(request()->query())

컨트롤러의 예 :

$users = User::search()->order()->with('type:id,name')
    ->paginate(30)
    ->appends(request()->query());

return view('users.index', compact('users'));

보기의 예 :

{{ $users->appends(request()->query())->links() }}


답변

하지 append()appends()
그래서 정답은 :

{!! $records->appends(Input::except('page'))->links() !!}


답변

LARAVEL 5

보기에는 다음과 같은 내용이 포함되어야합니다.

{!! $myItems->appends(Input::except('page'))->render() !!}


답변

페이지를 제외한 모든 입력 매개 변수를 유지하려면이 구성을 사용하십시오.

{!! $myItems->appends(Request::capture()->except('page'))->render() !!}

왜?

1) 요청에 추가 된 모든 것을 제거합니다.

  $request->request->add(['variable' => 123]);

2) 함수에 대한 입력 매개 변수로 $ request가 필요하지 않습니다.

3) “페이지”를 제외합니다.

PS) 및 Laravel 5.1에서 작동합니다.