2012-03-26 12 views
3

私は2つのコントローラがあります。ライブラリカートの中身を表示し、両方でCodeIgniterのキャッシュコントローラの問題

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アイテムがあります。私はデータがカートに存在する場合に知っていて、別のページにリダイレクトする、

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'); 
     }  

    } 

しかし、次を参照してください。私は、私はこの部分を解決することができたすべての項目に

を参照するには、Ctrl + F5キーを押す必要がありますカートが空の場合。

どうやら場合(の$ this - > cart->の内容は、())例えばカートがカートにカート/に充填が、空することができますように、「キャッシュに残っている」/となるまでを買いますCtrl F5を押すと、まだ失敗しています。

これを修正する方法はありますか、それとも間違っているのでしょうか?


p.d.カートのコントローラで私のaddメソッド:カート・モデルで

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

+0

[OK]を、私の編集記事を参照してください – csotelo

+0

残念ながら、私は「することができ、多くのことができますこと問題を参照してくださいが、それは他の誰かを助けるでしょう。私はちょうどあなたにアップヴォーテを与えて、あなたに運が欲しいです。 –

答えて

1

私はあなたのコード内の任意の問題を見つけるdidntの。私はそれがあなたのキャッシュをクリアするためにこれを試すことができますので、あなたが述べたようにキャッシュの問題だと思う。これは、CodeIgniterのによって作成されたすべての以前のキャッシュをクリアしても、将来的にキャッシュを作成するために防ぐことができます:

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

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

こんにちは、これらのコマンドをどこに入力するのですか?方法の中で?私はそれを試したので、動作しません。私は別の解決策を見つけました、「あまりクリーンではありません。 – csotelo

+0

あなたはビューをロードする直前にこれらの行を追加することができます –

+0

はい私は知っていますが、結果はありません:( – csotelo