【问题标题】:Codeigniter - How to pass url variable to pagination?Codeigniter - 如何将 url 变量传递给分页?
【发布时间】:2015-10-07 09:12:05
【问题描述】:

我第一次使用Codeigniter 分页库。现在,当用户从搜索表单中搜索任何内容时,我想将 URL 变量传递给 URL 末尾的分页,例如 http://localhost/sitename/brand/campaigns/6/?search="hello",以便在第二页上维护搜索结果。

知道如何使用 codeigniter 吗?

这是我的代码:

表格

<form name="frmSearch" id="frmSearch" method="get" action="<?php echo base_url(); ?>brand/campaigns">
    <input type="text" name="search" id="search" placeholder="Search campaigns" onchange="return trim(this)">
    <button type="submit" class="search-submit"></button>
</form>

控制器(campaigns_list.php)

public function __construct(){
    parent::__construct();
    $this->load->model('Campaigns_list_model');
    $this->load->library('pagination');
}

public function index($offset=0){
    IsNotLoggedIn(); // Check if a user is not logged in

    // For SEO
    $data['meta_title'] = 'Search';
    $data['meta_descripton'] = '';
    $data['meta_keywords'] = '';

    // Pagination code for campaigns code start
    $config['total_rows'] = $this->Campaigns_list_model->TotalCampaigns();

    // Check status value is number
    $status = $this->uri->segment(3);
    if(!ctype_digit($status)){
        $status = "1";
    }

    $config['base_url'] = base_url()."brand/campaigns/".$status;
    $config['per_page'] = 6;
    $config['uri_segment'] = '4';

    $config['full_tag_open'] = '<div class=""><ul class="pagination pull-right">';
    $config['full_tag_close'] = '</ul></div>';

    $config['first_link'] = '« First';
    $config['first_tag_open'] = '<li class="prev page">';
    $config['first_tag_close'] = '</li>';

    $config['last_link'] = 'Last »';
    $config['last_tag_open'] = '<li class="next page">';
    $config['last_tag_close'] = '</li>';

    $config['next_link'] = 'Next →';
    $config['next_tag_open'] = '<li class="next page">';
    $config['next_tag_close'] = '</li>';

    $config['prev_link'] = '← Previous';
    $config['prev_tag_open'] = '<li class="prev page">';
    $config['prev_tag_close'] = '</li>';

    $config['cur_tag_open'] = '<li class="active"><a href="">';
    $config['cur_tag_close'] = '</a></li>';

    $config['num_tag_open'] = '<li class="page">';
    $config['num_tag_close'] = '</li>';

    $this->pagination->initialize($config);
    $query = $this->Campaigns_list_model->GetCampaigns(6, $this->uri->segment(4));

    $data['Campaigns'] = null;

    if($query){
        $data['Campaigns'] =  $query;
    }
    // Pagination code for campaigns code end

    $this->load->view('include/brand_header', $data);
    $this->load->view('brand/campaigns_list', $data);
    $this->load->view('include/brand_footer');
}

【问题讨论】:

  • 在我看来,更好的建议是使用 ajax 进行分页。无需担心保留值,因为 ajax 不会重新加载。即使我使用 ajax 也实现了这一点。

标签: php codeigniter pagination codeigniter-2


【解决方案1】:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class My_controller extends CI_Controller {

    public function __construct() {

            parent::__construct();
            //here we will autoload the pagination library
            $this->load->library('pagination');
        }
    public function paginationExample()
    {
        //echo $this->uri->segment(2);die;

        $config = array();
        $config["base_url"] = base_url('My_controller/paginationExample');
        $config['total_rows'] =   $this->db->count_all("Your table");//here we will count all the data from the table
        $config['per_page'] = 5;//number of data to be shown on single page
        $config["uri_segment"] = 2;
        $this->pagination->initialize($config);
        $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
        $data["allData"] = $this->My_model->paginationExample($config["per_page"], $page);
        $data["links"] = $this->pagination->create_links();//create the link for pagination
        $this->load->view('your view',$data);
    }
}

有关如何在 codeigniter 中进行分页的更多信息,请尝试以下操作:http://w3code.in/2015/10/how-to-do-pagination-in-codeigniter/

【讨论】:

    【解决方案2】:

    您是否需要在网址中包含搜索标签?我的意思是,您可以将搜索标签保存在会话变量上,并且可以使用它。这就是我通常根据情况做的事情。这应该是,前提是您有办法让用户重置他的搜索字词。

    如果你确实需要这样使用它,你可以这样做:

    if (count($_GET) &gt; 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&amp;");

    取自以下问题(您也应该检查一下): codeigniter pagination url with get parameters

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 2018-05-17
      • 2016-11-23
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      相关资源
      最近更新 更多