2016-10-24 5 views
0

すみません。私はCodeigniterを使ってショッピングカートを作りました。ここには問題の詳細があります。コントローラーから送信するデータを表示できません。それは動作します。 [Codeigniter]

  • コントローラから他のビューページにデータを送信したいとします。私が望むデータは、ユーザーが「カートに追加」ボタンをクリックした製品の数量です(footer.phpビューで製品の量をエコーし​​たい)
  • 私はソースコードを他のものからコピーします。彼のコードを理解していない。
  • 私が理解できない点は、$ this-> load-> view( 'shopping/shopping')のようなものが見つからなかったので、彼がコントローラメソッド "add"カート、$データ)
  • 同じデータを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');   
    } 

ショッピング/ 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> 

<?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); ?> 
+0

"$ this-> load-> library(array( 'cart'" – Ima

答えて

1

彼はCodeIgniterのライブラリカートを使用しているshopping_view.phpでいくつかのコード。カートライブラリのドキュメントを参照してください - コントローラでのカートライブラリに製品を追加するhttp://www.codeigniter.com/user_guide/libraries/cart.html

..

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

、あなたはまた同じを使用することができます

$this->cart->contents(); 

を使用してビューから追加の製品をフェッチあなたのフッターのための製品を取得する方法

+0

$ this-> load-> view( 'shopping/cart'、$ data)は必須ではないということですか?うーん..セッションのような音 – tuchawat

+0

ええ、私は$ this-> cart-> contents();フッタービューのページに表示されます。それは私がコントローラメソッド "add"にいるときだけ動作しますが、他のコントローラメソッドに行くと動作しません。 (すべてのコントローラメソッドにフッタービューがあります)助けてくださいT_T – tuchawat

関連する問題