无法找到从控制器发送到视图的数据.但它是有效的.(Codeigniter)


cannot found the sending data from controller to view. but it work. [Codeigniter]

对不起。我使用Codeigniter来制作购物车,这里是问题的细节。

  • 我想从控制器发送数据到其他视图页面。我想要的数据是用户点击"添加到购物车"按钮的产品数量(我想在footer.php视图上回声产品数量)
  • 我从别人那里复制源代码,所以我有些地方不理解他的代码。
  • 我不明白的一点是他如何从控制器方法"add"发送数据到视图名称"shopping/cart",因为我没有找到类似$this->load->view('shopping/cart', $data)
  • 的东西
  • 如果我想发送相同的数据到footer.php视图。我该怎么办?
控制器

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Shopping extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        //load model
        $this->load->model('billing_model');
        $this->load->library(array('cart', 'form_validation'));
    }
    public function index()
    {   
        $this->load->view('header');
                //Get all data from database
        $data['products'] = $this->billing_model->get_all();
                //send all product data to "shopping_view", which fetch from database.      
        $this->load->view('shopping/shopping_view', $data);
        $this->load->view('footer');
    }

    public function add()
    {
              // Set array for send data.
        $insert_data = array(
            'id' => $this->input->post('id'),
            'name' => $this->input->post('name'),
            'price' => $this->input->post('price'),
            'qty' => 1
        );      
                 // This function add items into cart.
        $this->cart->insert($insert_data);
                // This will show insert data in cart.
        $this->load->view('header');
        $this->load->view('shopping/cart');
        $this->load->view('footer');
         }
    public function remove($rowid) 
    {
                    // Check rowid value.
        if ($rowid==="all"){
                       // Destroy data which store in  session.
            $this->cart->destroy();
        }else{
                    // Destroy selected rowid in session.
            $data = array(
                'rowid'   => $rowid,
                'qty'     => 0
            );
                     // Update cart data, after cancle.
            $this->cart->update($data);
        }
                 // This will show cancle data in cart.
        redirect('shopping/add');
    }
    public function update_cart()
    {
                // Recieve post values,calcute them and update
                $cart_info =  $_POST['cart'] ;
        foreach( $cart_info as $id => $cart)
        {   
                    $rowid = $cart['rowid'];
                    $price = $cart['price'];
                    $amount = $price * $cart['qty'];
                    $qty = $cart['qty'];
                        $data = array(
                'rowid'   => $rowid,
                                'price'   => $price,
                                'amount' =>  $amount,
                'qty'     => $qty
            );
            $this->cart->update($data);
        }
        redirect('shopping/add');        
    }   

shopping/cart.php视图中的一些代码

<div id="cart" >
            <div id = "heading">
                <h2 align="center">Products on Your Shopping Cart</h2>
            </div>
                <div id="text"> 
            <?php  $cart_check = $this->cart->contents();
            // If cart is empty, this will show below message.
             if(empty($cart_check)) {
             echo 'To add products to your shopping cart click on "Add to Cart" Button'; 
             }  ?> </div>
                <table id="table" border="0" cellpadding="5px" cellspacing="1px">
                  <?php
                  // All values of cart store in "$cart". 
                  if ($cart = $this->cart->contents()): ?>
                    <tr id= "main_heading">  <!--เขียนแบบนี้ก็ได้เหมือนecho ต่อจากifนั่นเอง-->
                        <td>Product ID</td>
                        <td>Name</td>
                        <td>Price</td>
                        <td>Qty</td>
                        <td>Amount</td>
                        <td>Cancel Product</td>
                    </tr>
                    <?php
                     // Create form and send all values in "shopping/update_cart" function.
                    echo form_open('shopping/update_cart');
                    $grand_total = 0;
                    $i = 1;
                    foreach ($cart as $item):
                        //   echo form_hidden('cart[' . $item['id'] . '][id]', $item['id']);
                        //  Will produce the following output.
                        // <input type="hidden" name="cart[1][id]" value="1" />
                        echo form_hidden('cart[' . $item['id'] . '][id]', $item['id']);
                        echo form_hidden('cart[' . $item['id'] . '][rowid]', $item['rowid']);
                        echo form_hidden('cart[' . $item['id'] . '][name]', $item['name']);
                        echo form_hidden('cart[' . $item['id'] . '][price]', $item['price']);
                        echo form_hidden('cart[' . $item['id'] . '][qty]', $item['qty']);
                        ?>
                        <tr>
                            <td>
                       <?php echo $i++; ?>
                            </td>
                            <td>
                      <?php echo $item['name']; ?>
                            </td>
                            <td>
                                $ <?php echo number_format($item['price'], 2); ?>
                            </td>
                            <td>
                            <!--
                             $data = array(
                              'maxlength' => '3',
                              'size' => '1',
                              'type' => 'number',
                              'style' => 'text-align:right'
                            ); -->
                            <?php echo form_input('cart[' . $item['id'] . '][qty]', $item['qty'], "maxlength='3' size='1' style='text-align: right'"); ?>
                            </td>

shopping_view.php中的一些代码

<?php    foreach ($products as $product) { ?>
    <form action="shopping/add" method="post" target="hiddenFrame">
    <?php
     echo form_hidden('id', $product['product_id']);
     echo form_hidden('name', $product['name']);   
     echo form_hidden('price', $product['price']); 
     echo form_submit($btn); ?>

他正在使用一个codeigniter library cart。参见购物车库文档- http://www.codeigniter.com/user_guide/libraries/cart.html

将产品添加到控制器中的购物车库..

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

然后使用

从视图中获取添加的产品
$this->cart->contents();

您也可以使用相同的方法为您的页脚获取产品