You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改CodeIgniter 4中分页的第一页链接URL

解决CodeIgniter 4分页URL自定义问题

需求:实现如下格式的分页URL,第一页无page/1后缀,其余分页保持page/{num}结构:

http://localhost:8080/admin/all-clients
http://localhost:8080/admin/all-clients/page/2
http://localhost:8080/admin/all-clients/page/3

解决方案

1. 优化控制器重定向逻辑

替换原有的segment判断代码,简化为更可靠的重定向规则:

public function index($page = 1){
    // 访问page/1时自动重定向到根路径
    if ($page === 1 && $this->request->getUri()->getSegment(3) === 'page') {
        return redirect()->to(base_url('admin/all-clients'));
    }

    $perPage = 10;
    $offset = ($page - 1) * $perPage; // 补全offset计算,原代码缺少*$perPage
    $total = $this->clientsModel->countAll();

    // 查询客户端数据
    $clients = $this->clientsModel
            ->select('clients.*, subject.subject_text')
            ->join('subject', 'clients.client_subject = subject.id')
            ->paginate($perPage, '', $page); // 直接传入$page即可,无需offset+1
    
    // 处理分页链接
    $pager = $this->clientsModel->pager;
    $pager->setPath('admin/all-clients', 'client-group');
    $links = $pager->makeLinks($page, $perPage, $total, 'bs_custom', 4, 'client-group');
    
    // 替换第一页链接中的page/1为空
    $links = str_replace('/page/1', '', $links);

    echo view('admin/allClients', [
        'page_title' => 'All Clients',
        'clients' => $clients,
        'pager_links' => $links,
    ]);
}

2. 确认路由配置正确性

保持现有路由顺序(CodeIgniter路由从上到下匹配,优先匹配无page的规则):

$routes->get('admin/all-clients', 'ClientsController::index');
$routes->get('admin/all-clients/page/(:num)', 'ClientsController::index/$1');

注意:如果控制器在Admin命名空间下,需补充命名空间前缀,例如\App\Controllers\Admin\ClientsController::index

3. 进阶:自定义Pager视图(可选)

若不想用字符串替换的方式,可直接修改分页视图生成逻辑:

  1. 复制系统视图 vendor/codeigniter4/framework/system/Views/pager/bs_custom.php 到 app/Views/pager/bs_custom.php
  2. 打开自定义视图,找到链接生成代码,修改为:
// 替换原$attributes['href'] = $pager->getUrl($page);
if ($page === 1) {
    $attributes['href'] = base_url('admin/all-clients');
} else {
    $attributes['href'] = $pager->getUrl($page);
}

修改后无需再做字符串替换,直接生成符合要求的链接。

内容的提问来源于stack exchange,提问作者Ashis Biswas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:20:00