2012-02-03 66 views
3

Cakephp 2.0分頁問題。如何在分頁鏈接中傳遞參數?Cakephp 2.0分頁問題。如何在分頁鏈接中傳遞參數?

我傳遞的參數一樣

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

但經過第二頁它不工作。

在第一次提交的頁面值$this->request->query但是從第二頁來了 其$this->params->named來,但它需要在$this->request->query

我的分頁部分來自視圖文件:

<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')); 
    ?> 

在打印過程中PARAMS在第一頁上:

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

    ) 

打印params on第二頁:

[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

我在View文件中添加了下面的代碼,現在每件事情都很好。在所有頁面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 docsPaginatorHelper::optionsurl選項有以下3個子選項:

  • 排序
  • 方向

CakeRequest::query不定義這些鍵。我不確定爲什麼它可以用於第一頁,而不是其他用戶,但是您當前的結構不正確。

如果你擔心通過查詢字符串值到下一個頁面,記住這一點:

默認PaginatorHelper將在所有當前通和命名參數合併。所以你不必在每個視圖文件中都這麼做。