Codeigniter缓存控制器问题

Codeigniter缓存控制器问题,codeigniter,caching,controller,Codeigniter,Caching,Controller,我有两个控制器: cart/ cart/buy 在这两种情况下,都显示库购物车的内容 <tbody> <?php foreach($this->cart->contents() as $items): ?> <tr> <td><?php echo $items['name'] ?></td> <td>$ <

我有两个控制器:

cart/
cart/buy
在这两种情况下,都显示库购物车的内容

    <tbody>
        <?php foreach($this->cart->contents() as $items): ?>
        <tr>
            <td><?php echo $items['name'] ?></td>
            <td>$ <?php echo $this->cart->format_number($items['price']); ?></td>
            <td><?php echo $items['qty'] ?></td>
            <td>$ <?php echo $this->cart->format_number($items['subtotal']); ?></td>
        </tr>
            <?php endforeach; ?>
    </tbody>
但是,我想知道购物车中是否有数据,如果购物车是空的,则重定向到另一个页面

显然如果($this->cart->contents()),“保留在缓存中”,例如,可以在cart/中填充购物车,但在cart/buy中为空,直到我按下Ctrl F5键,条件仍然失败

有没有办法解决这个问题,或者我做错了什么


p、 d.我在购物车控制器中的添加方法:

function add_item()
    {
        if($this->cart_model->validate_add_item() == TRUE)
        {  
            redirect('cart');
        }
    }
我在购物车模型中的添加方法:

function validate_add_item()
    {
        $id = $this->input->post('producto_id'); 
        $cantidad = $this->input->post('cantidad');

        $this->db->select('vNombre, dPrecio');
        $this->db->where('iIdProducto', $id);
        $query = $this->db->get('product', 1);

        if($query->num_rows > 0)
        { 

            foreach ($query->result() as $row)  
            {  

                $data = array(  
                        'id'      => $id,  
                        'qty'=> $cantidad,  
                        'price'  => $row->dPrecio,  
                        'name'  => $row->vNombre  
                );  


                $this->cart->insert($data);   

                return TRUE;    
            }
        }
        else
        {  
            return FALSE;  
        }   
    }

我没有发现你的代码有任何问题。我认为这是一个缓存问题,正如你提到的,所以你可以尝试这个来清除你的缓存。这将清除codeigniter之前创建的所有缓存,并防止将来创建缓存:

    $this->load->driver('cache');
    $this->cache->clean();

    $this->output->cache(0);

我使用了另一种方法:add_item(),这很有帮助,不幸的是,我看不出问题所在,但它会帮助其他人解决问题。我会给你一个投票,祝你好运。嗨,在哪里输入这些命令?内部的方法如何?因为我试过了,但没用。我找到了另一个解决方案“不太干净”,在方法buy/中添加一个随机值的参数,这样您总是可以看到值。您可以在加载视图之前添加这些行是的,我知道,但没有结果:(
    $this->load->driver('cache');
    $this->cache->clean();

    $this->output->cache(0);