Chào mừng các bạn đã quay trở lại freetuts.net. Như vậy ở bài trước chúng ta đã tìm hiểu xong cách viết ứng dụng Crud add, edit, delete, tuy bài viết chỉ dừng lại ở mức cơ bản nhưng cũng đủ cho các bạn có cái nhìn tổng quan hơn về codeigniter framework. Hôm nay chúng ta sẽ đi đến một library khá là quan trọng, đó là shopping cart. Vì thư viện Shopping Cart trong Codeigniter được tích hợp sẵn Session nên các bạn phải đặt giá trị cho key encryption_key trong file application/config.php nhé.

Trong Codeigniter Shopping Cart được lưu dưới dạng mảng và được mã hóa để lưu vào Session, mà Session trong codeigniter gắn liền với cookie (cookie lưu được 4Kb) nên bạn không thể lưu với dung lượng lớn được. Chính vì thế ta chỉ có thể lưu id sản phẩm và một số thông tin như giá cả chứ không thể lưu toàn bộ thông tin như hình ảnh, tiêu đề, tóm tắt. 

Cấu hình library shopping cart:

Muốn thao tác với shopping cart trong codeigniter thì trước tiên phải load nó theo cú pháp:

$this->load->library("cart");
Để tiện trong quá trình viết tuts tôi sẽ load thư viện shopping cart ngay tại hàm khởi tạo của controller.
<?php
class Shop extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->library("cart");
    }
    
}

Vậy là cấu hình thư viện xong, giờ ta tìm hiểu cách sử dụng nó nhé.

Thêm sản phẩm:

Shopping Cart trong Codeigniter lưu dưới dạng mảng và có những key bắt buộc không được sửa như như id, qty, price, name. Ngoài ra nó còn có thêm key options chứa các thông tin con như size, color của sản phẩm đó nên nếu những key này không giống với database của bạn thì hãy xử lý trước khi insert để đồng bộ. Các bạn xem đoạn code dưới đây:

 public function insert(){
        $data=array(
            "id" => "1",
            "name" => "Viet Nam Khong So Trung Quoc",
            "qty" => "1",
            "price" => "100000",
            "option" => array("author" => "freetuts.net"),
        );
        // Them san pham vao gio hang
        if($this->cart->insert($data)){
             echo "Them san pham thanh cong";
        }else{
            echo "Them san pham that bai";
        }
       
}
Trong đoạn code này tôi đã khởi tạo một sản phẩm mới chứa trong mảng $data. Sau đó sử dụng hàm insert của thư viện Shopping Cart để tiến hành thêm sản phẩm vào. Các bạn hãy chạy code và sẽ  thấy kết quả thành công hay thất bại.

Show danh sách sản phẩm:

Trong đoạn code show danh sách sản phẩm.Tôi dùng hàm contents trong thư viện shopping cart để tiến hành xem toàn bộ thông tin sản phẩm.

 public function show(){
        //Show thong tin chi tiet gio hang
        $data=$this->cart->contents();
        echo "<pre>";
        print_r($data);
        echo "</pre>";
}

Nếu kết quả như hình xem như chúng ta bước đầu tiếp cận được thao tác insert sản phẩm.

Xóa một sản phẩm:

Muốn xóa một sản phẩm thì chúng ta phải biết được cái rowid của sản phẩm đó. Khi các bạn insert sản phẩm thì trường rowid tự động phát sinh ra, trường này có nhiệm vụ giúp chúng ta phân biệt từng sản phẩm một cách toàn diện.

Muốn có được giá trị rowid thì chúng ta bắt buộc phải sử dụng vòng lặp foreach để xuất dữ liệu. Và có thể xóa được một sản phẩm thì trước tiên chúng ta cần phải có hơn một sản phẩm trong giỏ hàng.

Chúng ta có đoạn code insert mới như sau.

public function insert(){
        $data = array(
            array(
                'id' => '1',
                'name' => 'Viet Nam Khong So Trung Quoc',
                'price' => '10000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')  
            ),
            array(
                'id' => '2',
                'name' => 'Trung Quoc Vi Pham Chu Quyen Viet Nam',
                'price' => '20000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')
            ),
            array(
                'id' => '3',
                'name' => 'Tau Trung Quoc Lien Tuc Dam vao Tau Viet Nam',
                'price' => '30000',
                'qty'   => '1',
                'options' => array('author' =>  'freetuts.net')
            ),
            
        );
        // Them san pham vao gio hang
        if($this->cart->insert($data)){
             echo "Them san pham thanh cong";
        }else{
            echo "Them san pham that bai";
        }
       
}

Kết quả:

Array
(
    [c4ca4238a0b923820dcc509a6f75849b] => Array
        (
            [rowid] => c4ca4238a0b923820dcc509a6f75849b
            [id] => 1
            [name] => Viet Nam Khong So Trung Quoc
            [qty] => 1
            [price] => 100000
            [option] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 100000
        )

    [fbc6319f8c21a565917b59536f5d803a] => Array
        (
            [rowid] => fbc6319f8c21a565917b59536f5d803a
            [id] => 1
            [name] => Viet Nam Khong So Trung Quoc
            [price] => 10000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 10000
        )

    [72ea95e2650aca6c0707014d757b7ce4] => Array
        (
            [rowid] => 72ea95e2650aca6c0707014d757b7ce4
            [id] => 2
            [name] => Trung Quoc Vi Pham Chu Quyen Viet Nam
            [price] => 20000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 20000
        )

    [9acc658922ae3040b17a5ddaf35a4dbf] => Array
        (
            [rowid] => 9acc658922ae3040b17a5ddaf35a4dbf
            [id] => 3
            [name] => Tau Trung Quoc Lien Tuc Dam vao Tau Viet Nam
            [price] => 30000
            [qty] => 1
            [options] => Array
                (
                    [author] => freetuts.net
                )

            [subtotal] => 30000
        )

)