changed 4 years ago
Linked with GitHub

第三方套件 darryldecode/cart 購物車

安裝套件

Step 1.開啟Terminal,輸入以下指令
composer require "darryldecode/cart:~4.0"

安裝套件時如果出現記憶體不足的錯誤,可開啟Apache伺服器>config>php.ini,找到裏頭的一行設定"memory_limit",將其值改成-1,即可不限定伺服器的記憶體空間

Step 2.(非必須)修改config/app.php,加入 provider與 alias

加入以下到Service Provider陣列
Darryldecode\Cart\CartServiceProvider::class

加入以下到Alias陣列
'Cart' => Darryldecode\Cart\Facades\CartFacade::class

常用變數內容

$item = \App\Item::find(商品主鍵);
$rowId = 商品主鍵
$userID = Auth::user()->id;

基礎用法

使用Cart Facade前,記得加上use Cart;

將商品加入購物車

\\app\Http\Controllers\ShopController.php

public function addItem(Item $item){
    $data = [
        'id' =>$item->id,
        'name' => $item->title,
        'price' => $item->price,
        'quantity' => 1,
        'attributes' => [], //額外屬性
        'associatedModel' => $item //商品模型物件
    ];
    Cart::session($userID)->add($data);
}

測試路由

Route::get('/shops/additem/{item}','App\Http\Controllers\ShopController@addItem');

變更購物車裏頭的商品

這個方法並非設定商品的屬性,而是增加。比方說 quantity => 1 ,表示數量加1的意思

\\app\Http\Controllers\ShopController.php

public function updateItem(Item $item,$qty){
    \Cart::session($userID)->update($item->id,[
        'quantity' => $qty
    ]);
}

測試路由

Route::get('/shops/updateitem/{item}/{qty}','App\Http\Controllers\ShopController@updateItem');

刪除購物車中的商品

\\app\Http\Controllers\ShopController.php

public function removeItem(Item $item){
    \Cart::session($userID)->remove($item->id);
}

測試路由

Route::get('/shops/removeitem/{item}','App\Http\Controllers\ShopController@removeItem');

取得購物車的內容

\\app\Http\Controllers\ShopController.php

public function getContent(){
    $cartContent = \Cart::session($userID)->getContent();
    dd($cartContent);
}

測試路由

Route::get('/shops/getcontent','App\Http\Controllers\ShopController@getContent');

進階用法

清空購物車

\\app\Http\Controllers\ShopController.php

public function clear(){
    \Cart::session($userID)->clear();
}

測試路由

Route::get('/shops/clear','App\Http\Controllers\ShopController@clear');

確認購物車是否為空

\\app\Http\Controllers\ShopController.php

public function checkEmpty(){
    $isEmpty = \Cart::session($userID)->isEmpty();
        dd($isEmpty);
    }
}

測試路由

Route::get('/shops/checkempty','App\Http\Controllers\ShopController@checkEmpty');

確認購物車商品總數

\\app\Http\Controllers\ShopController.php

public function getTotalQuantity(){
    $qty = \Cart::session($userID)->getTotalQuantity();
    return $qty;
} 

測試路由

Route::get('/shops/gettotalquantity','App\Http\Controllers\ShopController@getTotalQuantity');

取得小計與總計

\\app\Http\Controllers\ShopController.php

public function getTotal(){
    $subtotal = \Cart::session($userID)->getSubTotal();
    $total = \Cart::session($userID)->getTotal();
    return '小計:' . $subtotal . ',總計:' . $total;
} 

測試路由

Route::get('/shops/gettotal','App\Http\Controllers\ShopController@getTotal');

自定義功能頁面(非必須)

開啟Terminal,輸入以下指令

php artisan vendor:publish --provider="Darryldecode\Cart\CartServiceProvider" --tag=“config"

Select a repo