【问题标题】:First link of pagination shows 404 page in CodeIgniter分页的第一个链接在 CodeIgniter 中显示 404 页面
【发布时间】:2020-09-04 18:07:41
【问题描述】:

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

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

进入分类页面的 url 是http://localhost/ecom/category/seats,但它显示 404 错误页面。但是当我给http://localhost/ecom/category/seats/1 它工作正常并且分页也工作正常第二个和第三个链接也可以工作但是当我在分页中单击 1 时它会出现 404 错误页面。我的控制器代码是

   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');
}

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

【问题讨论】:

标签: php codeigniter pagination routes


【解决方案1】:

它显示是因为您的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';

【讨论】:

    【解决方案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)
    

    这是可能的,因为

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

    我还发现了一个类似的question,你可能想看看。

    希望这能解决您的问题。

    【讨论】:

    • 现在产品有问题。我每次都在获取产品及其四个产品,但在第二页或第三页产品重复。
    • 现在产品有问题。我每次都在获取产品及其四个产品,但在第二页或第三页产品重复。
    • 一个类别中只有 8 个产品,即灯,但它在分页中显示了四个链接,并且几乎每个页面上都重复了两个产品
    • 老实说,我不认为提供的代码有什么问题,也许你在逻辑部分遗漏了一些东西。此链接可能会有所帮助 - guru99.com/codeigniter-pagination.html
    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 2017-01-11
    • 2013-04-07
    • 2017-07-02
    • 2016-10-25
    • 2020-05-27
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多