所以我想知道在使用Web服务时是否可以使用Codeigniter的分页?我们正在使用REST,因为我们没有连接到数据库本身,我想知道如何处理分页设置中所需的总行调用?
答案 0 :(得分:1)
所以这就是我设法实现它的方式:
//My array to hold the envelope data
$displayArray = $data['response']['envelopes'];
// The pagination controller code
$quantity = 15;
$start = $this->uri->segment(3);
$data['displayArray'] = array_slice($displayArray,$start,$quantity);
$config['base_url'] = 'http://mysite.com/lcb/status/index/';
$config['total_rows'] = count($displayArray);
$config['per_page'] = $quantity;
$this->pagination->initialize($config);
$this->load->view('envelope_status', $data);
// Code for view
<?php $this->load->view('includes/header'); ?>
<div id="container">
<h1>History</h1>
<?php echo $this->pagination->create_links(); ?>
<table>
<tr><th>Envelope ID</th><th>Status</th><th>Date</th></tr>
<?php
foreach ($displayArray as $envelope) { ?>
<tr cellpadding="2"><td style="text-transform: uppercase;"><?php echo $envelope["envelopeId"]; ?></td><td><?php echo $envelope["status"]; ?></td><td><?php echo $envelope["statusChangedDateTime"]; ?></td></tr>
<?php } ?>
</table>
</div>
<?php $this->load->view('includes/footer'); ?>
所以你有它。我仍然需要看到让它以最新到最旧的顺序显示它们,而不是相反,但它可以工作!
答案 1 :(得分:0)
只要您可以获取需要获取的项目总数,以及特定索引中的某些项目(例如id = 5到id = 10),您就可以使用codeigniter分页库
下面是示例(在您的控制器中):
<?php
public function some_page($current_page)
{
$per_page = 5; // example
$current_index = ($current_page - 1) * $per_page;
$your_item_list = $this->YOUR_API->get_item_list($current_index, $per_page);
$config['total_rows'] = $this->YOUR_API->get_total_rows();
$config['per_page'] = $item_per_page;
$this->load->library('pagination', $config);
}
?>
或者您可以使用技巧,获取所有数据,然后使用count()
和array_slice()
<?php
$all_items = $this->YOUR_API->get_all_items();
$item_list = array_slice($all_item, $current_index, $per_page);
$config['total_rows'] = count($all_items);
?>