繁体   English   中英

分页的第一个链接显示 CodeIgniter 中的 404 页

[英]First link of pagination shows 404 page in CodeIgniter

我正在处理类别页面的分页。 我的路线是

$route['category/(:any)/(:num)'] = 'public_controller/category/$1';

而 url 到 go 到类别页面是http://localhost/ecom/category/seats但它显示 404 错误页面。 但是当我给http://localhost/ecom/category/seats/1时,它工作正常,分页也工作正常,第二个和第三个链接也工作,但是当我在分页中单击 1 时,它会出现 404 错误页面。 我的 controller 代码是

   public function category($cat_slug = null,$offset = null){
 $cat_id = $this->db->where('cat_slug',$cat_slug)->get('categories')->row_array();
 $config['base_url'] = base_url() .'category/'.$cat_slug;
    $config['total_rows'] = $this->db->where('cat_id',$cat_id['cat_id'])->count_all('products');
    $config['per_page'] = 4;
    $config['uri_segment'] = 3;
$config['use_page_numbers'] = TRUE;
    $config['full_tag_open'] = "<ul class='pagination'>";
    $config['full_tag_close'] ="</ul>";
    $config['num_tag_open'] = '<li>';
    $config['num_tag_close'] = '</li>';
    $config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
    $config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
    $config['next_tag_open'] = "<li>";
    $config['next_tagl_close'] = "</li>";
    $config['prev_tag_open'] = "<li>";
    $config['prev_tagl_close'] = "</li>";
    $config['first_tag_open'] = "<li>";
    $config['first_tagl_close'] = "</li>";
    $config['last_tag_open'] = "<li>";
    $config['last_tagl_close'] = "</li>";

    $this->pagination->initialize($config);
 $data['products'] = $this->public_model->category_page($cat_slug,$config['per_page'],$offset);
 $id['cat_slug'] = $cat_slug;
 $this->load->view('public_temp/header1');
 $this->load->view('public_temp/left1',$id);
 $this->load->view('public/category',$data);
 $this->load->view('public_temp/footer1');
}

我可以尝试什么来解决这个问题?

它显示是因为您的router expect 2 parameter but you are giving 1 parameter seats

以这种方式定义您的路线

$route['category/(:any)/(:num)'] = 'public_controller/category/$1/$2';

现在调用您的路线http://localhost/ecom/category/seats/0用于类别页面http://localhost/ecom/category/seats/1用于第一个分页

如果你想分开你的类别路线Define two route one for category page and other for category pagination

对于类别页面

$route['category/(:any)'] = 'public_controller/category/$1';

对于类别分页

$route['category/(:any)/(:num)'] = 'public_controller/category/$1/$2';

所以,我为你的问题创建了一个演示,这对我有用↓↓

$route['category']               = 'my_controller/category';       // this route handles all the requests without any additional segments
$route['category/(:any)']        = 'my_controller/category/$1';    // this route handles the requests when only one segment is present
$route['category/(:any)/(:num)'] = 'my_controller/category/$1/$2'; // this route handles the requests when there are two segments(2nd parameter being a number)

这是可能的,因为

路由将按照它们定义的顺序运行。 较高的路线总是优先于较低的路线。(参考

我还发现了一个类似的问题,您可能想看看。

希望这能解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM