2013-01-08 5 views
3

나는 CakeBook을 따라 Ajax 기반 페이지 매김을 만들었다. 링크가 모두 작동 중이며 요청을 컨트롤러의 올바른 작업으로 보내므로 경로가 작동하고 있습니다. 내 컨트롤러 동작에서 관련 페이지 번호를 가져오고 데이터를 가져 오도록 페이지 매기기 도우미로 보냅니다. 그러나 설정 한 페이지와 관계없이 결과의 첫 페이지 만 반환합니다. 그래서 CakePp의 Ajax 페이지 매김 설정하지 않음 페이지

public function reviews(){ 
    if ($this->RequestHandler->isAjax()) { 
     if(!empty($this->params['page'])) { 
      $review = $this->Page->find('first',  array('conditions'=>array('friendly'=>'reviews'))); 
      $this->layout = 'ajax'; 
      $this->paginate = array(
       'page' => $this->params['page'], 
       'limit' => 3, 
       'order' => array(
        'Review.rating'=>'desc') 
      ); 
      $reviews = $this->paginate('Review');  
      $this->set(compact('review','reviews')); 
     } 
} 
} 

그래서 내가 어떻게 매기기 사용합니까 .. 1.

컨트롤러 액션 코드 모델과 난 항상 페이지 집합을 얻고 충분히 확인에 PAGINATE 기능의 재정의를했다 내 페이지를 보내겠습니까?

+0

페이지를 설정하지 않아도되므로 페이지를 삭제할 수 있습니다. 표시 할 페이지가 두 개 이상 있습니까? 또한 페이지 매김 재정의가 표시되지 않습니다. – jeremyharris

+0

안녕하세요, 항상 첫 페이지를 보내므로 수동으로 페이지를 추가했습니다. 나는 페이징 오버 라이드를 꺼냈다. 나는 단지 어떤 페이지 번호를 보냈는지, 항상 1 이었기 때문에 문제는 모델이 아니라 컨트롤러에 있다고 결론 내렸다. –

+0

페이지 매김은 모델과는 아무런 관련이 없습니다. 페이지 매김 기는 페이지 매김 인수를 기반으로하는 일반적인 찾기 호출에 대한 제한을 설정합니다. 2 페이지가 있었 니? 생성 된 SQL도 살펴 보았습니까? – jeremyharris

답변

2

좋아요. 해결책을 찾았습니다. 페이지 매김의 기본값은 명명 된 매개 변수를 사용하는 것입니다. blah/page : 6과 같은 URL을 제공합니다. 이유는 모르겠지만 페이지 매김 배열을 남겨두고 페이지를 설정하지 않으면 요청의 페이지 번호를 무시하는 것 같습니다. 그래서 난 후 제대로 라우팅과 내가 AJAX 요청에서 잘못된 페이지를 얻고 있었다 통과되지 않았습니다

   $this->paginate = array('Review'=>array(
       'paramType' => 'querystring', 
       'page' => $this->params['page'], 
       'limit' => 3, 
       'order' => array(
        'Review.rating'=>'desc') 
      )); 

에 페이지 매김의 옵션을 변경했습니다. 어느 쪽이 라우팅 문제일지도 모른다는 생각이 들었습니다. 다음과 같이 페이지 링크 옵션을 설정하여 페이징 링크를 만들 때 경로를 강제로 지정 했으므로 필자는이 방법을 사용하지 않았습니다. -

이것은 현재 작동 중이므로 동일한 문제가있는 다른 사람에게 도움이되기를 바랍니다.