CodeIgniter分页不适用于get方法

时间:2014-03-10 09:25:42

标签: codeigniter pagination codeigniter-2 codeigniter-url

我需要使用get参数进行分页。在方法中,我编写了如下代码。

public function index($offset = 0) {

    $data['title_for_layout'] = 'Apartment Advertisement - Search';


    // Pagination config
    $this->load->library('pagination');

    $pagination['enable_query_strings'] = true;
    $pagination['page_query_string'] = true;
    $pagination['allow_get_array'] = true;
    $pagination['first_url'] = base_url('search');
    $pagination['base_url'] = $config['first_url'];
    $pagination['total_rows'] = $this->aa_movies->no_of_search_movies();
    $data['no_of_results'] = $pagination['total_rows'];
    $pagination['use_page_numbers'] = TRUE;
    $pagination['per_page'] = 20;

    // Initialize pagination
    $this->pagination->initialize($pagination);

    // Offset
    $offset = 20 * $offset;

    // Get apartments
    $data['apartments'] = $this->aa_movies->search_movies($this->input->get('keyword'), $this->input->get('city'), $this->input->get('locations'), $offset);

    $this->load->view($this->config->item('index_search_view'), $data);
}

在视图中

<?php echo form_open(base_url('search'), array('method' => 'get'); ?>
<?php echo $this->pagination->create_links(); ?>
<?php echo form_close(); ?>

所以分页网址看起来像

http://localhost/reelstubs/search/1

但我想在分页网址中如下

http://localhost/reelstubs/search?keyword=complex&city=bangalore&page=1

即使我尝试通过包含$ _SERVER ['REQUEST_URI']来更改分页base_url。但网址看起来像

http://localhost/reelstubs/search?keyword=complex&city=bangalore/1

所以我没有使用$this->uri->segment();获取页面请帮助我克服这个问题。我已经浪费了2天时间。这项工作将更受赞赏。

2 个答案:

答案 0 :(得分:0)

  1. 您可以在隐藏的输入中添加过滤字符串(关键字和城市),并使用$ this-&gt; input-&gt; get('name')

  2. 获取这些值
  3. 或者您可以在细分中发送必要的值并使用$ this-&gt; uri-&gt; segment();

    http://localhost/search/method(func)/complex/bangalore/1

    $ keyword = $ this-&gt; uri-&gt; segment('3');
    $ city = $ this-&gt; uri-&gt; segment('4');
    $ page = $ this-&gt; uri-&gt; segment('5');

答案 1 :(得分:0)

使用分页库的CodeIgniter 3.0版本。它有一个配置选项来重用查询字符串。

我自己在CodeIgniter 2中实现了它,但是我没有替换分布式版本,而是将其部署为一个名为MY_Pagination的重载库,并将其放在我的'application / libraries'文件夹中。我必须做的唯一代码更改就是将访问修饰符设置为public而不是protected。