CodeIgniter分页链接跳转异常:点击跳至其他控制器而非vehicle
嘿,我来帮你捋捋这个分页跳转的问题,大概率是分页配置或者路由的小细节出了问题,咱们一步步排查:
1. 先看分页链接的实际指向
右键点击分页按钮,查看生成的href属性内容。如果链接显示的是yourdomain.com/other_controller/xxx/10,而不是你期望的yourdomain.com/你的控制器名/vehicle/10,那问题根源就很明确了——分页的基础URL没配置正确。
2. 确认分页配置里的base_url是否准确
CodeIgniter的分页类必须明确指定base_url,也就是分页链接要指向的控制器方法路径。你需要在生成分页链接前,把这个配置项设置正确:
// 示例:假设你的控制器叫Vehicle,方法是vehicle,那路径就是控制器名/方法名 $config['base_url'] = site_url('vehicle/vehicle'); $config['total_rows'] = $this->vehicle_model->get_total_vehicle_count(); // 替换成你的总数据量查询逻辑 $config['per_page'] = 10; // 每页显示的条数 $this->pagination->initialize($config);
这里一定要注意,site_url()里的路径是控制器名/方法名,别写错了,不然分页链接自然会指向错误的控制器。
3. 检查路由配置是否有干扰
打开application/config/routes.php,看看有没有类似下面的路由重写规则:
$route['vehicle'] = 'other_controller/some_method';
如果存在这样的规则,那访问vehicle路径时会被强制跳转到其他控制器,分页点击后自然就不对了。
4. 带搜索参数的分页要注意参数传递
你的代码里用到了$searchText = $this->input->post('searchText'),如果是搜索后的分页,POST参数在页面跳转时会丢失,所以需要把搜索参数加到分页链接里:
// 兼容POST和GET方式获取搜索参数 $searchText = $this->input->post('searchText') ?: $this->input->get('searchText'); // 把搜索参数拼接到base_url里 $config['base_url'] = site_url('你的控制器名/vehicle') . '?searchText=' . urlencode($searchText);
这样分页跳转时才会带上搜索条件,也不会因为参数丢失导致路由走了其他逻辑。
5. 确认uri_segment配置是否正确
如果你的vehicle方法还有其他URI参数(比如你的控制器名/vehicle/car/1),那需要调整$config['uri_segment']的值,让分页类知道哪一段是页码:
// 比如页码在URI的第4段,就设置为4 $config['uri_segment'] = 4;
如果这个值设错了,CodeIgniter解析URI时会出错,可能导致跳转到错误的控制器方法。
先按这几步排查,应该能快速定位到问题~
内容的提问来源于stack exchange,提问作者Nadeem Ijaz

