如何在 CakePHP 中实现带搜索的分页
How to implement pagination with search in CakePHP
我的分页正常,甚至搜索也正常。但是我遇到的问题是当我在分页 link 中单击下一页 link 时。搜索不适用于分页的下一页。我还需要知道如何通过 url 发送其他参数,并将它们用于分页查询。我需要帮助,因为我是 CakePHP 的新手。
在控制器页面我使用了这个代码:
class StatesController extends AppController {
public $components = array('Paginator');
public $paginate = array(
'limit' => 2,
'fields' => array('State.id', 'State.state','State.code'),
'order' => array(
'State.state' => 'asc'
)
);
public function admin_index() {
$this->layout = false;
$this->layout = 'adminlayout';
//****** pagination starts
$search=$this->request->data('State.search');
$this->Paginator->settings = $this->paginate;
// similar to findAll(), but fetches paged results
$stateListAr = $this->Paginator->paginate('State',
array('State.state LIKE' => "%".$search."%")
);
$this->set('stateListAr', $stateListAr);
//****** pagination ends
$this->set('stateListAr',$stateListAr);
$this->render('admin_index');
}
}
在查看页面中我使用了这段代码:
<?php echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); ?>
<?php echo $this->Paginator->numbers(array('first' => 'First page')); ?>
<?php echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); ?>
我已经找到了我的问题的解决方案,就在这里。我在视图页面中使用了一个代码,这里 $search 变量我已经从控制器设置了数据。
$搜索);
$this->分页器->选项(数组(
'url' => $urlParamAr
));
echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled'));
echo $this->Paginator->numbers(array('first' => 'First page'));
echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled'));
?>
我的分页正常,甚至搜索也正常。但是我遇到的问题是当我在分页 link 中单击下一页 link 时。搜索不适用于分页的下一页。我还需要知道如何通过 url 发送其他参数,并将它们用于分页查询。我需要帮助,因为我是 CakePHP 的新手。
在控制器页面我使用了这个代码:
class StatesController extends AppController {
public $components = array('Paginator');
public $paginate = array(
'limit' => 2,
'fields' => array('State.id', 'State.state','State.code'),
'order' => array(
'State.state' => 'asc'
)
);
public function admin_index() {
$this->layout = false;
$this->layout = 'adminlayout';
//****** pagination starts
$search=$this->request->data('State.search');
$this->Paginator->settings = $this->paginate;
// similar to findAll(), but fetches paged results
$stateListAr = $this->Paginator->paginate('State',
array('State.state LIKE' => "%".$search."%")
);
$this->set('stateListAr', $stateListAr);
//****** pagination ends
$this->set('stateListAr',$stateListAr);
$this->render('admin_index');
}
}
在查看页面中我使用了这段代码:
<?php echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); ?>
<?php echo $this->Paginator->numbers(array('first' => 'First page')); ?>
<?php echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); ?>
我已经找到了我的问题的解决方案,就在这里。我在视图页面中使用了一个代码,这里 $search 变量我已经从控制器设置了数据。 $搜索); $this->分页器->选项(数组( 'url' => $urlParamAr )); echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled'));
echo $this->Paginator->numbers(array('first' => 'First page'));
echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled'));
?>