我想在CodeIgniter 4中进行如下分页:
http://localhost:8080/admin/all-clients
http://localhost:8080/admin/all-clients/page/2
http://localhost:8080/admin/all-clients/page/3
下面是我的方法:
public function index($page = 1){
/**
* page redirect to http://localhost:8080/admin/all-clients
* if the user visits to http://localhost:8080/admin/all-clients/page/1
*/
$segment = null != $this->request->getUri()->getSegment(3);
if($segment == 'page'){
if ( $this->request->getUri()->getSegment(4) == 1) {
return redirect()->to( base_url('admin/all-clients') );
}
}
$perPage = 10;
$offset = ($page - 1);
$total = $this->clientsModel->countAll();
/**
* get all clients
*/
$clients = $this->clientsModel
->select('clients.*, subject.subject_text')
->join('subject', 'clients.client_subject = subject.id')
->paginate($perPage, '', $offset + 1);
/**
* get pager links
*/
$pager = $this->clientsModel->pager;
$pager->setPath('admin/all-clients/page', 'client-group');
$links = $pager->makeLinks($page, $perPage, $total, 'bs_custom', 4, 'client-group');
echo view('admin/allClients', [
'page_title' => 'All Clients',
'clients' => $clients,
'pager_links' => $links,
]);
}
这是我路线:
$routes->get('all-clients', 'ClientsController::index');
$routes->get('all-clients/page/(:num)', 'ClientsController::index/$1');
在分页链接中,第一个页面URL是http://localhost:8080/admin/all-clients/page/1。但我想要http://localhost:8080/admin/all-clients/,其余的分页链接应该是http://localhost:8080/admin/all-clients/page/2,http://localhost:8080/admin/all-clients/page/3...
我的问题是如何做到这一点。
2条答案
按热度按时间syqv5f0l1#
你不需要自己处理重定向,因为你配置的路由器已经做了。
你可以保持一切原样,除了你必须删除的重定向块,你会看到它已经工作了:
olqngx592#
首先,你的参数define $page=1,但是你的URL是空的。
不要在控制器中使用getSegment,这是一个主要原因。
试试这个