2012-03-26 127 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