如何在codeigniter 4中更改第一个分页链接URL

6ss1mwsb  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(108)

我想在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/2http://localhost:8080/admin/all-clients/page/3...
我的问题是如何做到这一点。

syqv5f0l

syqv5f0l1#

你不需要自己处理重定向,因为你配置的路由器已经做了。
你可以保持一切原样,除了你必须删除的重定向块,你会看到它已经工作了:

public function index($page = 1){
    echo $page;
}
olqngx59

olqngx592#

首先,你的参数define $page=1,但是你的URL是空的。
不要在控制器中使用getSegment,这是一个主要原因。
试试这个

public function index($page = ""){
      $page=$page==""?1:$page;
    }

相关问题