2012-05-02 39 views
2

我正在使用cakePHP,我试图让paginator组件通过get变量或者passargs,当你点击到不同的页面时。我有各种不同的搜索输入选择器,可以“过滤”返回的结果。这适用于第一视图,但当我点击不同的页面时,它会显示所有结果。cakePHP paginator not passing passedargs

我有我的分页程序如下设置:

// In my controller class: 
public $paginate = array('maxLimit' => 10, 'paramType' => 'querystring'); 

// Within my action method: 
$this->paginate = array('conditions' => array(...), 
         order => array('Model.field ASC'), 
         'limit' => 20 
); 

// Calling the paginator: 
$results = $this->paginate('Model'); 
$this->set(compact('results')); 

在我看来文件:

<div class="paging"> 
<?php 
    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')); 
?> 
</div> 

编辑: 从我的理解,最好使用passedArgs,但我有点不确定如何做到这一点。我的$ this-> passedArgs不会返回结果,所以我在我的控制器示例中创建了传递的参数。我也改变了我的形式从获取到后:

$this->passedArgs["searchfield"] = $_POST["value"]; 

现在正确地传递passedArgs在分页条,但我不能确定如何现在建立寻呼条件阵列。在大多数情况下,用户不会选择默认值的例子,其中一个过滤器是从日期到日期,然后是一个搜索输入框,如果我离开日期,它仍然会创建argumens并且不会返回任何结果,所以本质上我的url会是这样的:

http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey 

任何援助?

回答

2

可以通过所有参数在与视图传递:

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

或手动分配PARAMS:

$this->Paginator->options(array('url' => array("0", "1"))); 

befor呼应分页程序

参见CakePHP Cookbook用于进一步举例

+0

嗨@ Nebel54,谢谢你的建议。我想我找到了问题,那就是我的过滤器表单或搜索表单仅将值发布到GET,因此我的$ this-> passedArgs为空。你能否指出我是如何构建passedArgs的? – mauzilla

+0

你可以发布你的get参数的样子吗?是/ param1:true/param2:name or like /?param1 = true&param2 = name – Nebel54

+0

它是/ param1:value/param2:值,但现在因为并非所有参数都会有值,所以它会执行param1:0/param2:possiblevalue/which will break the query – mauzilla