+6

Tìm hiểu về Laravel 5 Shopping Cart trong PHP

Đối với trang web thương mại điện tự bất kỳ nào thì việc xây dựng giỏ hàng là việc khá quan trọng, bạn nghĩ làm sao để tối ưu và nhanh chóng nhất không ạ. Không để mọi người lâu nữa, bây giờ mình sẽ giới thiệu cho mọi người một thư viện khá phổ biến hiện nay, giúp chúng ta xây dựng nhanh chóng một giỏ hàng với đẩy đủ các chức năng cơ bản của giỏ hàng, thêm, sửa, xóa, sửa các sản phẩm của giỏ hàng được lưu dưới dạng mảng và lưu trong session, với thư viện Shopping Cart mọi việc trở nên khá dễ dàng. Nào chúng ta bắt đầu đến những việc bắt đầu vào việc tìm hiểu và cài đặt thư viện này luôn nhé, không để các bạn phải chờ lâu nữa ạ !!

Cài đặt Shopping Cart.

Chúng ta cài package sử dụng composer như sau :

composer require gloudemans/shoppingcart

Bây giờ chúng ta tiếp tục configuring cho thư viện này nhé, đơn giản thôi bạn chỉ đơn giản làm theo các bước sau nhé

1. Mở file trong thư mục có đường dẫn sau config/app.php

2. Thêm vào mảng providers dòng sau : Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class,

'providers' => [

/*
* Laravel Framework Service Providers...
*/
......................................
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class
],

3. Thêm vào mảng aliases dòng sau: Cart' => Gloudemans\Shoppingcart\Facades\Cart::class,

'aliases' => [
......................................
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class,
],

Usage

Adding items to the shopping cart

Cart::add()

Cú pháp

Cart::add('293ad', 'Product 1', 1, 9.99)

Bây giờ chúng ta sẽ cùng demo một chút nhé

Step 1: Xây dựng route

  1. Mở file trong thư mục có đường dẫn sau app/Http/web.php
  2. Thêm vào flie web.php

Route::post('/cart', 'Front@cart');

Step 2: Xây dựng form products.blade.php

Bây giờ chúng ta sẽ bắt đầu xây dựng blade form để khách hàng add thêm sản phẩm vào giỏ hàng.

1. Thay đổi nội dung trong file products.balde.php

@extends('layouts.layout')
@section('content')       
<section id="cart_items">
    <div class="container">
        <div class="breadcrumbs">
            <ol class="breadcrumb">
                <li><a href="#">Home</a></li>
                <li class="active">Shopping Cart</li>
            </ol>
        </div>
        <div class="table-responsive cart_info">
            @if(count($cart))
            <table class="table table-condensed">
                <thead>
                    <tr class="cart_menu">
                        <td class="image">Item</td>
                        <td class="description"></td>
                        <td class="price">Price</td>
                        <td class="quantity">Quantity</td>
                        <td class="total">Total</td>
                        <td></td>
                    </tr>
                </thead>
                <tbody>
                    @foreach($cart as $item)
                    <tr>
                        <td class="cart_product">
                            <a href=""><img src="images/cart/one.png" alt=""></a>
                        </td>
                        <td class="cart_description">
                            <h4><a href="">{{$item->name}}</a></h4>
                            <p>Web ID: {{$item->id}}</p>
                        </td>
                        <td class="cart_price">
                            <p>${{$item->price}}</p>
                        </td>
                        <td class="cart_quantity">
                            <div class="cart_quantity_button">
                                <a class="cart_quantity_up" href=""> + </a>
                                <input class="cart_quantity_input" type="text" name="quantity" value="{{$item->qty}}" autocomplete="off" size="2">
                                <a class="cart_quantity_down" href=""> - </a>
                            </div>
                        </td>
                        <td class="cart_total">
                            <p class="cart_total_price">${{$item->subtotal}}</p>
                        </td>
                        <td class="cart_delete">
                            <a class="cart_quantity_delete" href=""><i class="fa fa-times"></i></a>
                        </td>
                    </tr>
                    @endforeach
                    @else
                <p>You have no items in the shopping cart</p>
                @endif
                </tbody>
            </table>
        </div>
    </div>
</section> <!--/#cart_items-->
@endsection

Step 3: Thay đổi phương thức cart trong controller

1. Mở file trong thư mục có đường dẫn sau app/Http/Controllers/Front.php

2. Import thư viện the Request, Redirect and Cart namespaces

use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Redirect;
use Cart;
public function cart() {
if (Request::isMethod('post')) {
$product_id = Request::get('product_id');
$product = Product::find($product_id);
Cart::add(array('id' => $product_id, 'name' => $product->name, 'qty' => 1, 'price' => $product->price));
}

$cart = Cart::content();

return view('cart', array('cart' => $cart, 'title' => 'Welcome', 'description' => '', 'page' => 'home'));
}

Update các sản phẩm trong giỏ hàng

Cập nhật được một mặt hàng bất kỳ trong giỏ hàng bạn cần lấy được id của sản phẩm đó, tiếp theo sử dụng phương thức update() được hỗ trợ sẵn để cập nhật giỏ hàng của mình ** Cú pháp **

Cart::update($rowId, 3); // update số lượng của sản phẩm trong giỏ hàng

Ta update lại trong file resources/views/cart.blade.php

<a class="cart_quantity_up" href='{{url("cart?product_id=$item->id&increment=1")}}'> + </a>
<a class="cart_quantity_down" href='{{url("cart?product_id=$item->id&decrease=1")}}'> - </a>

Update lại hàm trong controller

  public function cart() {
    thêm sản phẩm mới vào giỏ hàng
    if (Request::isMethod('post')) {
        $product_id = Request::get('product_id');
        $product = Product::find($product_id);
        Cart::add(array('id' => $product_id, 'name' => $product->name, 'qty' => 1, 'price' => $product->price));
    }
    if (Request::get('product_id') && (Request::get('increment')) == 1) {
        $rowId = Cart::search(array('id' => Request::get('product_id')));
        $item = Cart::get($rowId[0]);

        Cart::update($rowId[0], $item->qty + 1);
    }
    if (Request::get('product_id') && (Request::get('decrease')) == 1) {
        $rowId = Cart::search(array('id' => Request::get('product_id')));
        $item = Cart::get($rowId[0]);

        Cart::update($rowId[0], $item->qty - 1);
    }

    $cart = Cart::content();

    return view('cart', array('cart' => $cart, 'title' => 'Welcome', 'description' => '', 'page' => 'home'));
}

Xóa sản phẩm trong giỏ hàng

 $rowId = Cart::search(array('id' => Request::get('product_id')));
 Cart::remove($rowId[0]);

Xóa toàn bộ sản phẩm trong giỏ hàng

Cú pháp

Cart::destroy();

Tổng kết

Trong bài hướng dẫn này, mình đã chia sẻ cách sử dụng package shopping cart cùng các phương thức của nó, cùng demo xây dựng một giỏ hàng như trên, hy vọng bào viết này có thể giúp ích cho các bạn. Từ tất cả phần chia sẻ trên mình mong rằng các bạn có thể xây dựng được một trang web thương mại điện tử một cách dễ dàng và thuận tiện nhất, hi vọng bài viết này có thể giúp ích được cho mọi người nhé, cám ơn đã đọc bài viết của mình.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí