消息:未定义的属性:CI_Loader::$cart(Codeigner 3)


Message: Undefined property: CI_Loader::$cart (Codeigniter 3)

大家好,我正在为一个项目使用codeigniter 3。现在我需要添加一个购物车系统。所以我尝试使用CI的默认购物车类。但当我试图通过视图加载它时,它会给我一条错误消息

遇到PHP错误

严重性:通知

消息:未定义的属性:CI_Loader::$cart

这是我的Cart.php,它是控制器。

defined('BASEPATH') OR exit('No direct script access allowed');
class Cart extends CI_Controller {
    public function __construct (){
        
        parent::__construct();
        
        $this->load->helper(array('url','language','form'));
    }
    public function index()
    {
        $this->load->library('cart');
        $this->load->view('home/cart');
    }
    public function update(){
        
        $this->load->library('cart');
        $this->cart->update($_POST);
        redirect(base_url().'home/cart');
    }
    public function add_variables(){
        
        $this->load->library('cart');
        $data = array(
            array(
                       'id'      => 'sku_123ABC',
                       'qty'     => 1,
                       'price'   => 39.95,
                       'name'    => 'T-Shirt',
                       'options' => array('Size' => 'L', 'Color' => 'Red')
                    ),
               array(
                       'id'      => 'sku_567ZYX',
                       'qty'     => 1,
                       'price'   => 9.95,
                       'name'    => 'Coffee Mug'
                    ),
               array(
                       'id'      => 'sku_965QRS',
                       'qty'     => 1,
                       'price'   => 29.95,
                       'name'    => 'Shot Glass'
                    )
        );
        $this->cart->insert($data); 
    }
}

这是我的观点(cart.php)

<!DOCTYPE html>
<html>
<head>
<title>Cart<title>
</head>
<body>
    <?php $this->load->view('home/top-bar'); ?>
    <div id="page">
        <?php $this->load->view('home/header'); ?>
        <div id="center-right">
            <h1>This is Cart</h1>
        <?php echo form_open(base_url().'Cart/update'); ?>
<table cellpadding="6" cellspacing="1" style="width:100%" border="0">
<tr>
  <th>QTY</th>
  <th>Item Description</th>
  <th style="text-align:right">Item Price</th>
  <th style="text-align:right">Sub-Total</th>
</tr>
<?php $i = 1; ?>
<?php foreach ($this->cart->contents() as $items): ?>
        <?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>
        <tr>
          <td><?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?></td>
          <td>
                <?php echo $items['name']; ?>
                        <?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>
                                <p>
                                        <?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>
                                                <strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />
                                        <?php endforeach; ?>
                                </p>
                        <?php endif; ?>
          </td>
          <td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
          <td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
        </tr>
<?php $i++; ?>
<?php endforeach; ?>
<tr>
  <td colspan="2"> </td>
  <td class="right"><strong>Total</strong></td>
  <td class="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
</tr>
</table>
<p><?php echo form_submit('', 'Update your Cart'); ?></p>
        </div>
        
    </div>
    <?php $this->load->view('home/footer'); ?>    
</body>
</html>

有人能帮我一下吗?非常感谢。

您必须将控制器类名cart更改为其他名称,因为cart类已经使用了该名称,请尝试更改

$autoload['libraries']=数组('数据库','电子邮件','会话','艺术');

我的问题是通过在autoload.php文件

中添加cart来解决的