Update Batch Cart pada Codeigniter

Pada Codeigniter 3.2.0 mendatang akan dihapus Cart Library dan Smiley Helper terkait kabar sedih yang dirilis pada Forum Resmi Codeigniter. Sedangkan saya sendiri sedang gemar menggunakan salah satunya, yakni Cart Library utnuk membangun web Toko Online atau sering disebut web e-commerce. Tapi untung saja kita masih dapat emnggunakannya. dan pihak BCIT sebagai pengembang Codeigniter menyajikannya dalam repositorynya utnuk dikembangkan secara independen.

Untuk Smiley Helper dapat di-fork disini. Sedangkan Cart Librarynya disini

Oops, cukup sekian intermezonya, berikut adalah cara untuk update cart secara masal. Contoh ini diambil dari dokumentasi Codeigniter yang pernah ada.

View

Sebagai asumsi nya, untuk view cart menampilkan daftar keranjang seperti kode berikut :


<?php echo form_open('cart/update'); ?>
  <table cellpadding="6" cellspacing="1" style="width:100%" border="0">
    <tr>
      <th>QTY</th>
      <th>Item Description</th>
      <th style="text-align:right">Item Price</th>
      <th style="text-align:right">Sub-Total</th>
    </tr>

    <?php foreach ($this->cart->contents() as $items): ?>
      <?php echo form_hidden('rowid[]', $items['rowid']); ?>
      <tr>
        <td><?php echo form_input(array('name' => 'qty[]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?></td>
        <td>
          <?php echo $items['name']; ?>
          <?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>
            <p>
              <?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>
              <strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />
              <?php endforeach; ?>
            </p>
          <?php endif; ?>
        </td>
        <td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
        <td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
      </tr>
    <?php endforeach; ?>

    <tr>
      <td colspan="2"> </td>
      <td class="right"><strong>Total</strong></td>
      <td class="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
    </tr>

  </table>

  <p><?php echo form_submit('', 'Update your Cart'); ?></p>
<?php echo form_close(); ?>

Controller

Untuk asumsi file pada controller dengan nama Cart.php dan function update


  public function update() {

    $rowid = $this->input->post('rowid[]');
    $qty = $this->input->post('qty[]');

    $data = array();
    for ($i = 0; $i < count($rowid); $i++) { 

      $data[] = array(
      'rowid' => $rowid[$i],
      'qty'   => $qty[$i]
      );
    }

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

    redirect('cart');
  }
Disqus Comments