2012-02-03 67 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将在所有当前通和命名参数合并。所以你不必在每个视图文件中都这么做。