나는 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
으로 가능한 한 많이 사용하지 않으려 고 노력합니다 . 전역 도우미 함수를 사용하는 것은 코드가 적고 훨씬 우아합니다.
최신 정보:
Input
Laravel 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에서 작동합니다.