2013-08-08 2 views
1

페이지 매김 링크를 클릭 할 때 검색 매개 변수를 보존하는 데 문제가 있습니다. 예를 들어 검색 쿼리가 40 개의 레코드를 반환하고 두 페이지가있는 경우 두 번째 페이지를 클릭하면 검색에서 반환 된 40 개 대신 전체 레코드 집합의 두 번째 페이지가 반환됩니다.검색 매개 변수를 사용하여 Laravel 페이지 매기기

public function postIndex(){ 

    $validator = Validator::make(
     Input::all(), 
     array('priceMin' => array('numeric'), 
      'priceMax' => array('numeric') 
      ) 
    ); 

    if ($validator->fails()){ 
     return Redirect::to('items')->withInput()->withErrors($validator); 
    } else { 
     return Redirect::to('items')->withInput(); 
    } 
} 

그리고 내 getIndex() : 여기

는 내 컨트롤러에서 postIndex()입니다

retriever 객체가, 기존의 입력을 통해 루프 및 모든 유효한 검색 매개 변수를 발견
public function getIndex(){ 

    $items= $this->retriever->getListings(Input::old(), 20); 

    return View::make('listings', array('items' => $items); 
} 

과 함께 데이터베이스를 쿼리 그 (것)들, 지정된 양 (이 경우에는 20)으로 페이지 매김을합니다.

나는 ->appends()를 사용하려했지만 다음 데이터가 Input::old()에없는 그것은 GET하지 POST 사용하기 때문에 10 개 검색 매개 변수가있는 경우 그것은 끔찍한 URL을한다. 페이지 매김 링크에 매개 변수를 적용하려면 어떻게해야합니까?

답변

5

나는 필터링/정렬/검색을하기 위해 POST 요청을 사용하지 않을 것입니다 !!! 이것은 단지 잘못입니다.

일반적으로 사용자가 일부 데이터 (검색 매개 변수)가 전송 된 페이지 (검색 결과 페이지)를 다시로드하려고 시도하면 브라우저는 데이터를 다시로드하고 다시 보내야하는지 여부를 묻습니다. 나는 적어도, 이것은 성가신다고 말하면 안된다.

해결책 : Laravel 메서드를 사용하고 '추한'URL이 생성 되더라도 appends()을 사용하십시오. 이는 프레임 워크와 상관없이 일반적인 해결책입니다.

+1

검색 매개 변수를 데이터베이스에 저장하고 URL의 검색 ID 및 페이지 만 사용할 수도 있습니다. 더 많은 일을하지만 깨끗해. –

+0

그래, 이것도 해결책이다. 이 방법을 통해 사용자가 무엇을 검색하는지 확인할 수 있습니다. – Andreyco

+0

예, 처음에 내가 한 것처럼, 이것은 최근에 한 일입니다. 그래도 검색어를 저장하지 않습니다. 아마도 곧 구현할 것입니다. –

관련 문제