CodeIgniter中使用count($this->cart->contents())致页面异常求助
解决CodeIgniter视图头部获取购物车数量导致页面空白的问题
看起来你遇到的页面空白问题大概率是PHP致命错误导致的——错误触发后PHP直接停止执行,所以只有头部之前的内容输出了,后面的都没加载。咱们一步步排查解决:
1. 先开启错误提示,找到问题根源
首先打开项目根目录的index.php,找到以下两行,修改成这样:
error_reporting(E_ALL); ini_set('display_errors', 1);
刷新页面后,你就能看到具体的错误信息了(比如Cart类未加载、调用了不存在的方法等),这是排查问题的关键。
2. 确保Cart类已正确加载
CodeIgniter的Cart库不会自动加载,你需要手动处理:
- 方法一:在控制器中加载:在渲染这个视图的控制器方法里,先加载Cart库:
$this->load->library('cart'); - 方法二:全局自动加载:打开
application/config/autoload.php,找到$autoload['libraries'],把'cart'加进去:$autoload['libraries'] = array('cart');
如果没加载Cart类,直接调用$this->cart会触发致命错误,导致页面中断。
3. 使用正确的方式获取购物车数量
其实CodeIgniter的Cart类已经提供了专门的方法来获取商品总数,比你自己count更可靠:
<?php echo $this->cart->total_items(); ?>
如果你坚持用count($this->cart->contents()),建议先做个判断,避免contents()返回非数组的情况:
<?php $cart_items = $this->cart->contents(); echo count($cart_items); ?>
4. 排查视图输出中断的细节
另外,你之前写的<?php echo $rows = count($this->cart->contents()); ?>这种写法本身没问题,但如果Cart类未加载,这行代码会直接抛出错误,中断页面输出。所以核心还是先确保Cart库能正常调用。
按照上面的步骤排查,应该能解决页面空白的问题,同时正确显示购物车数量。
内容的提问来源于stack exchange,提问作者Shantanu
相关产品推荐
相关产品推荐

