2

在我的名为article的控制器中,我有以下函数,用于显示数据库中的数据:

function get_all(){

  $this->load->library('pagination');
  $config['base_url'] = base_url().'article/get-all';
  $config['total_rows'] = 2; // example
  $config['per_page'] = 1;
  $config['num_links'] = 20;
  $config['full_tag_open'] = '<div class="pagination" align="center">';
  $config['full_tag_close'] = '</div>';

  $this->pagination->initialize($config);

  $this->load->model('mod_articles');
  $data['records']= $this->mod_articles->get_articles_this_year($config['per_page'],$this->uri->segment(3));

  $this->load->view('view_article_list',$data);
}

通常到达函数的 url 是:http://localhost/article/get_all,但是为了使 url 看起来像这样http://localhost/article/get-all,在 config/route.php 我添加了以下行:

 $route['article/get-all'] = "article/get_all";

它工作正常,但是当我单击分页链接转到下一页时,它显示404 Page Not Found

您能告诉我如何正确使用 URI 路由通配符吗?

编辑

我在 config/route.php 中也有以下内容,以避免索引出现在 url

 $route['article/(:any)'] = "article/index/$1";

如果我删除上面的行,那么分页就可以了。

4

2 回答 2

3

分页类是否向链接添加任何额外的 URI 段?例如:

/article/get-all/page/5

如果是这样,您应该设置两条路线,例如:

$route['article/get-all'] = "article/get_all";
$route['article/get-all/(:any)/(:any)'] = "article/get_all/$1/$2";
于 2013-02-19T23:45:00.933 回答
0

我没有看到您包含 的配置uri_segment,分页库使用此配置。

$config["uri_segment"] = 3;

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;

用它作为

 $data['records']= $this->mod_articles->get_articles_this_year($config['per_page'],$page);

直接附加$this->uri->segment(3)在查询中会返回NULL,因为如果 url 段无效,它会返回 FALSE,而 sqllimit需要的是从哪里开始的整数。

于 2013-02-20T00:28:05.453 回答