Codeigniter购物车,查看购物车页面中的内容

时间:2014-02-18 06:34:56

标签: php codeigniter

将产品添加到我的购物车工作正常,但在将产品添加到购物车后,如果没有刷新视图页面,则无法在我的视图页面中查看产品,

我试过redirect()方法仍然没用。 将产品添加到购物车后如何查看我的页面。

任何帮助??

我的控制器:

<?php

class Cart extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function addtocart($cal_id, $f_id) {
        if (empty($cal_id)) {
            $this->load->view('Cart_view');
        }
        $this->load->model('cart_model');
        $product = $this->cart_model->cart_contents($cal_id, $f_id);
        foreach ($product as $row) {
            $name = $row->title;
            $fees = $row->fees;
        }
        $product = array(
            'id' => $cal_id,
            'qty' => 1,
            'price' => $fees,
            'name' => $name,
        );
        print_r($product);
        $this->cart->insert($product);
        $this->load->view('Cart_view');
    }

    public function destroy() {
        $this->cart->destroy();
    }

}
?>

我的模特:

<?php

class cart_model extends CI_Controller
{
    public function __construct() {
        parent::__construct();
    }
    public function cart_contents($cal_id,$f_id)
    {
      $product=$this->db->select('*')
              ->from('calander')
              ->join('fees','calander.cal_id=fees.cal_id')
              ->where('fees.cal_id',$cal_id)
              ->where('fees.f_id',$f_id)
              ->get();
      return $product->result();

    }
}
?>

我的观点

<html>
    <head><title></title></head>
    <body>
        <?php
        if ($cart = $this->cart->contents()) {
            ?><table>
                <tr>
                    <td>
                        <h3><u>Cart page</u></h3>
                    </td>
                </tr>
                <tr>
                    <th>course</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
                <?php
                foreach ($cart as $contents) {
                    ?><tr>
                        <td><?php echo $contents['name']; ?></td>
                        <td><input type="text" value="<?php echo $contents['qty']; ?>"></td>
                        <td><?php echo $contents['price']; ?></td>
                    </tr>

                <?php } ?>
            </table> <?php
           // redirect(base_url('/index.php/Cart/Cart_view'));
        }
        ?>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

我不明白你想要做什么。加载视图$this->load->view('Cart_view');时,需要将包含所有变量的数据数组传递到视图中,如$this->load->view('Cart_view',$data);。没有数据数组,视图无法显示数据。当您至少编写代码时,请以其他人能够理解该变量代表什么的方式创建变量名称。没有足够的数据,我冒昧地修改你的代码

控制器

public function addtocart($cal_id, $f_id) {
        $data=array(
            'view'=>''
        );
        if (empty($cal_id)) {
            $this->load->view('Cart_view',$data);
        } else {
            $this->load->model('cart_model');
            $product = $this->cart_model->cart_contents($cal_id, $f_id);
            $data['view']='';
            foreach($product as $row):
                $data['view'].=' <tr>
                <td>'.$row->title.'</td>
                <td>'.$row->qty.'</td>
                <td>'.$row->price.'</td>
                </tr>';
            endforeach; 
            $this->load->view('Cart_view',$data);
        }   
    }

模型

 public function cart_contents($cal_id,$f_id){
              $this->db->select('*')
              $this->db->from('calander')
              $this->db->join('fees','calander.cal_id=fees.cal_id')
              $this->db->where('fees.cal_id',$cal_id)
              $this->db->where('fees.f_id',$f_id);
              $query = $this->db->get();
              return $query->result();
    } 

查看

<html>
    <head><title></title></head>
    <body>
        <table>
                <tr>
                    <td>
                        <h3><u>Cart page</u></h3>
                    </td>
                </tr>
                <tr>
                    <th>course</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
                <?php if($count>0){
                    echo $view;
                }?>
            </table> 
    </body>
</html>