2012-02-03 4 views
3

Cakephp 2.0 페이지 매김 문제. 페이지 매김 링크로 인수를 전달하는 방법? Cakephp 2.0 페이지 매김 문제. 페이지 매김 링크로 인수를 전달하는 방법?

나는

$this->Paginator->options(array('url' => $this->request->query)); 

같은 인수를 전달하지만, 2 차 페이지 후에는 작동하지 않습니다. 그것의 $this->params->named 오는 첫 페이지 제출 된 값의

$this->request->query에 있지만, 두 번째 페이지에서 오는 있지만보기 파일에서 $this->request->query

내 매김 부분에 가야합니다 : PARAMS를 인쇄하는 동안

<div class="paging"> 
    <?php 
    $this->Paginator->options(array('url' => $this->request->query)); 
     echo $this -> Paginator -> prev('< ' . __('Previous'), array(), null, array('class' => 'prev disabled')); 
     echo $this -> Paginator -> numbers(array('separator' => '')); 
     echo $this -> Paginator -> next(__('Next') . ' >', array(), null, array('class' => 'next disabled')); 
    ?> 

첫 번째 페이지 :

[query] => Array 
    (
     [first_name] => 
     [username] => an 
     [email] => 
     [dob] => Array 
      (
       [year] => 
       [month] => 
       [day] => 
      ) 

    ) 

두 번째 페이지 :

  • 종류의
  • 방향
  • 페이지

귀하의 CakeRequest::query하지 않습니다 :

[named] => Array 
      (
       [first_name] => 
       [username] => an 
       [email] => 
       [dob%5Byear%5D] => 
       [dob%5Bmonth%5D] => 
       [dob%5Bday%5D] => 
       ) 
[query] => Array 
    (
     [/admin/users/index/first_name:/username:an/email:/dob] => Array 
      (
       [year] => 
      ) 

    ) 
</div> 

답변

1

다음 코드를보기 파일에 추가 했으므로 모든 것이 잘 작동합니다. 모든 페이지에서 PARAM 값은 쿼리> 요청 -에

$url = $this->params['url']; 

    unset($url['url']); 
    if(isset($this->request->data) && !empty($this->request->data)) { 
     foreach($this->request->data[$model_name] as $key=>$value) 
      $url[$key] = $value; 
    } 
    $get_var = http_build_query($url); 

    $arg1 = array(); 
    $arg2 = array(); 
    //take the named url 
    if(!empty($this->params['named'])) 
     $arg1 = $this->params['named']; 

    //take the pass arguments 
    if(!empty($this->params['pass'])) 
     $arg2 = $this->params['pass']; 

    //merge named and pass 
    $args = array_merge($arg1,$arg2); 

    //add get variables 
    $args["?"] = $get_var; 
    $this->Paginator->options(array('url' => $args)); 

오고있다 그리고 컨트롤러 액션 메소드에서 나는 다음과 같은

$args = $this->params['url']; 
    unset($args['url']); 
    if(isset($args['submit'])) 
     unset($args['submit']); 
    if(!empty($this->request->data)){ 
     foreach($this->data['User'] as $key=>$value) 
      $args[$key] = $value; 
    }else{ 
     foreach($args as $key=>$value) 
      $this->request->data['User'][$key] = $value; 
    } 
추가
1

According the the docs, PaginatorHelper::optionsurl 옵션 다음과 같은 세 하위 옵션이 있습니다 이러한 키가 정의되어 있어야합니다. 왜 첫 번째 페이지가 아닌 다른 페이지에서 작동하는지 확신 할 수 없지만 현재 구조가 올바르지 않습니다. 다음 페이지에 쿼리 문자열 값을 전달 대해 걱정하는 경우

,이 점을 명심 :

을 기본 PaginatorHelper으로 현재의 패스라는 이름의 모든 매개 변수에 병합합니다. 따라서 각보기 파일에서이를 수행 할 필요가 없습니다.