2012-04-20 2 views
0

$this->set('found_products', $data);을 통해 결과 변수를 제공하는 컨트롤러의 작업이 있습니다. 보기 페이지 products.ctp 두 개의 섹션으로 분할된다 : 정상에CakePHP : 다음/개인을 클릭하면 변수가 지워집니다.

  1. , 사용자가보기 $found_products 설정되어 검색 문자열을 입력하는 형태.

  2. 아래에는 $found_products으로 설정된 경우에만 페이지가 매겨진 결과가 표시됩니다. 즉 if (isset($found_products))이 참입니다. if (isset($found_products))이 true의 경우

, 나는 텍스트 상자에 이미 검색 문자열로 양식 아래에 표시 첫 번째 페이지를 얻을. URL은 myapp/controller/products입니다.

다음 페이지로 이동할 때 문제가 발생합니다. URL은 myapp/controller/action/products:2이되고 myapp/controller/products 아래에 사용되는 변수는 없습니다. 새 페이지로 이동하는 것은 모든 변수를 지우는 것처럼 보입니다. 아래는 페이징에 사용하는 코드이며, 이에 대한 리 라우트 규칙이 없습니다. 이 문제를 어떻게 해결합니까?

 <div class="paging"> 
      <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?> 
      <?php echo $this->Paginator->numbers();?>   
      <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?> 
     </div> 

나는 액션 (products)과 뷰에 대해이 설정에 $ _SESSION을 사용하여이 문제를 해결하기 위해 시도하지했지만, 내가 이런 짓을 할 때,`$ this-> 매기기는 '더 이상 일했다.

답변

1

$ this-> Paginator-> 옵션을 사용하여 전달 된 인수를 페이지 매김 링크에 보존 할 수 있습니다. 이 코드를 사용해보십시오

<div class="paging"> 
    <?php $this->Paginator->options(array('url' => $this->passedArgs)); ?> 
    <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?> 
    <?php echo $this->Paginator->numbers();?>   
    <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?> 
</div> 
+0

이것은 효과가없는 것 같습니다. 페이지 매김 결과의 첫 번째 페이지에서 URL은'myapp/controller/products'이며이 URL에는 인수가 없습니다. '$ this-> passArgs'도 비어 있습니다. 다른 아이디어가 있습니까? – musicliftsme

+0

양식을 제출할 때 사용한 방법을 언급하는 것을 잊어 버렸습니다. 'POST'를 사용하는 경우 url 문자열에서 검색 매개 변수를 사용할 수 없으므로이 방법은 작동하지 않습니다. 위의 솔루션은 'GET'메소드에서 작동합니다. 그러나 'POST'를 사용하려면 자바 스크립트를 사용하여 각 페이지 매김 링크가 검색 문자열과 페이지 번호가있는 양식을 제출해야합니다. 하지만 IMHO를 사용하면 'GET'메서드를 사용하는 것이 좋습니다. 북마크로도 결과를 저장할 수 있기 때문입니다. – Vishal

+0

흠 .. 네 말이 맞아. 감사! 지금 당장 GET을 사용하는 것이 더 쉽습니다. POST를 사용하고 나중에 리다이렉션을 할 것입니다. 그러나 마침내이 작업을 수행하는 방법을 알아 냈습니다. 옵션 배열을 약간 변경했는데 -> $ this-> Paginator-> options [ 'url'] [ '?'] = $ this-> passedArgs;', 그래서 다음에 페이지는 다음 또는 이전 페이지로 이동하는 데 필요한 URL을 따랐습니다. – musicliftsme

관련 문제