2012-03-26 128 views
3

我有2个控制器:笨高速缓存控制器问题

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> 

我的问题是控制器保持在高速缓存中,当我添加购物车的第一件物品。我的意思是,控制器购物车/有5项和控制器购物车/购买有1项。我不得不按Ctrl + F5查看所有项目

我能解决这个部分:

function buy() 
    { 

     $this->output->set_header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); 
     $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
     $this->output->set_header('Pragma: no-cache'); 
     $this->output->set_header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 

     if($this->cart->contents()) 
     { 

      $this->load->view('web/products/buy_view'); 
     } 
     else 
     { 
      redirect('cart'); 
     }  

    } 

但看,我想知道是否有购物车中的数据,并重定向到另一页如果购物车是空的。

显然如果($这个 - > cart->内容()),“留在缓存”,例如在车可以车/填补而空的车/买,直到我按Ctrl F5条件仍然失败。

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


p.d.在车控制我的加入方法:

function add_item() 
    { 
     if($this->cart_model->validate_add_item() == TRUE) 
     { 
      redirect('cart'); 
     } 
    } 

我的add方法在车模型:

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; 
     } 
    } 
+0

我用另一种方法:方法add_item() – csotelo 2012-03-26 21:13:49

+0

好吧,看我的编辑职位 – csotelo 2012-03-26 21:19:13

+0

这有很大帮助,不幸的是我可以”没有看到问题,但它会帮助别人。我只会给你一个赞成票,祝你好运。 – 2012-03-26 21:21:02

回答

1

我没有找到代码中的任何问题。我认为它的缓存问题正如你所提到的,所以你可以试试这个来清除你的缓存。这将清除由笨创建的所有以前的高速缓存,并防止在未来创建缓存:

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

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

嗨,在哪里输入这些命令?方法如何?因为我试过了,不起作用。我发现另一个解决方案“不太干净”,在购买方法中添加一个随机值的参数/这样你总能看到这些值。 – csotelo 2012-03-27 13:06:16

+0

你可以在加载视图之前添加这些行 – 2012-03-27 13:07:48

+0

是的我知道,但没有结果:( – csotelo 2012-03-27 13:23:22