在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):darryldecode/laravelshoppingcart开源软件地址(OpenSource Url):https://github.com/darryldecode/laravelshoppingcart开源编程语言(OpenSource Language):PHP 100.0%开源软件介绍(OpenSource Introduction):Laravel 5 & 6 & 7 Shopping CartA Shopping Cart Implementation for Laravel Framework QUICK PARTIAL DEMODemo: https://shoppingcart-demo.darrylfernandez.com/cart Git repo of the demo: https://github.com/darryldecode/laravelshoppingcart-demo INSTALLATIONInstall the package through Composer. For Laravel 5.1~:
For Laravel 5.5, 5.6, or 5.7~:
CONFIGURATION
Darryldecode\Cart\CartServiceProvider::class
'Cart' => Darryldecode\Cart\Facades\CartFacade::class
php artisan vendor:publish --provider="Darryldecode\Cart\CartServiceProvider" --tag="config" HOW TO USE
Quick Usage Example// Quick Usage with the Product Model Association & User session binding
$Product = Product::find($productId); // assuming you have a Product model with id, name, description & price
$rowId = 456; // generate a unique() row ID
$userID = 2; // the user ID to bind the cart contents
// add the product to cart
\Cart::session($userID)->add(array(
'id' => $rowId,
'name' => $Product->name,
'price' => $Product->price,
'quantity' => 4,
'attributes' => array(),
'associatedModel' => $Product
));
// update the item on cart
\Cart::session($userID)->update($rowId,[
'quantity' => 2,
'price' => 98.67
]);
// delete an item on cart
\Cart::session($userID)->remove($rowId);
// view the cart items
$items = \Cart::getContent();
foreach($items as $row) {
echo $row->id; // row ID
echo $row->name;
echo $row->qty;
echo $row->price;
echo $item->associatedModel->id; // whatever properties your model have
echo $item->associatedModel->name; // whatever properties your model have
echo $item->associatedModel->description; // whatever properties your model have
}
// FOR FULL USAGE, SEE BELOW.. UsageIMPORTANT NOTE!By default, the cart has a default sessionKey that holds the cart data. This
also serves as a cart unique identifier which you can use to bind a cart to a specific user.
To override this default session Key, you will just simply call the Example: $userId // the current login user id
// This tells the cart that we only need or manipulate
// the cart data of a specific user. It doesn't need to be $userId,
// you can use any unique key that represents a unique to a user or customer.
// basically this binds the cart to a specific user.
\Cart::session($userId);
// then followed by the normal cart usage
\Cart::add();
\Cart::update();
\Cart::remove();
\Cart::condition($condition1);
\Cart::getTotal();
\Cart::getSubTotal();
\Cart::addItemCondition($productID, $coupon101);
// and so on.. See More Examples below: Adding Item on Cart: Cart::add() There are several ways you can add items on your cart, see below: /**
* add item to the cart, it can be an array or multi dimensional array
*
* @param string|array $id
* @param string $name
* @param float $price
* @param int $quantity
* @param array $attributes
* @param CartCondition|array $conditions
* @return $this
* @throws InvalidItemException
*/
# ALWAYS REMEMBER TO BIND THE CART TO A USER BEFORE CALLING ANY CART FUNCTION
# SO CART WILL KNOW WHO'S CART DATA YOU WANT TO MANIPULATE. SEE IMPORTANT NOTICE ABOVE.
# EXAMPLE: \Cart::session($userId); then followed by cart normal usage.
# NOTE:
# the 'id' field in adding a new item on cart is not intended for the Model ID (example Product ID)
# instead make sure to put a unique ID for every unique product or product that has it's own unique prirce,
# because it is used for updating cart and how each item on cart are segregated during calculation and quantities.
# You can put the model_id instead as an attribute for full flexibility.
# Example is that if you want to add same products on the cart but with totally different attribute and price.
# If you use the Product's ID as the 'id' field in cart, it will result to increase in quanity instead
# of adding it as a unique product with unique attribute and price.
// Simplest form to add item on your cart
Cart::add(455, 'Sample Item', 100.99, 2, array());
// array format
Cart::add(array(
'id' => 456, // inique row ID
'name' => 'Sample Item',
'price' => 67.99,
'quantity' => 4,
'attributes' => array()
));
// add multiple items at one time
Cart::add(array(
array(
'id' => 456,
'name' => 'Sample Item 1',
'price' => 67.99,
'quantity' => 4,
'attributes' => array()
),
array(
'id' => 568,
'name' => 'Sample Item 2',
'price' => 69.25,
'quantity' => 4,
'attributes' => array(
'size' => 'L',
'color' => 'blue'
)
),
));
// add cart items to a specific user
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->add(array(
'id' => 456, // inique row ID
'name' => 'Sample Item',
'price' => 67.99,
'quantity' => 4,
'attributes' => array(),
'associatedModel' => $Product
));
// NOTE:
// Please keep in mind that when adding an item on cart, the "id" should be unique as it serves as
// row identifier as well. If you provide same ID, it will assume the operation will be an update to its quantity
// to avoid cart item duplicates Updating an item on a cart: Cart::update() Updating an item on a cart is very simple: /**
* update a cart
*
* @param $id (the item ID)
* @param array $data
*
* the $data will be an associative array, you don't need to pass all the data, only the key value
* of the item you want to update on it
*/
Cart::update(456, array(
'name' => 'New Item Name', // new item name
'price' => 98.67, // new item price, price can also be a string format like so: '98.67'
));
// you may also want to update a product's quantity
Cart::update(456, array(
'quantity' => 2, // so if the current product has a quantity of 4, another 2 will be added so this will result to 6
));
// you may also want to update a product by reducing its quantity, you do this like so:
Cart::update(456, array(
'quantity' => -1, // so if the current product has a quantity of 4, it will subtract 1 and will result to 3
));
// NOTE: as you can see by default, the quantity update is relative to its current value
// if you want to just totally replace the quantity instead of incrementing or decrementing its current quantity value
// you can pass an array in quantity value like so:
Cart::update(456, array(
'quantity' => array(
'relative' => false,
'value' => 5
),
));
// so with that code above as relative is flagged as false, if the item's quantity before is 2 it will now be 5 instead of
// 5 + 2 which results to 7 if updated relatively..
// updating a cart for a specific user
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->update(456, array(
'name' => 'New Item Name', // new item name
'price' => 98.67, // new item price, price can also be a string format like so: '98.67'
)); Removing an item on a cart: Cart::remove() Removing an item on a cart is very easy: /**
* removes an item on cart by item ID
*
* @param $id
*/
Cart::remove(456);
// removing cart item for a specific user's cart
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->remove(456); Getting an item on a cart: Cart::get() /**
* get an item on a cart by item ID
* if item ID is not found, this will return null
*
* @param $itemId
* @return null|array
*/
$itemId = 456;
Cart::get($itemId);
// You can also get the sum of the Item multiplied by its quantity, see below:
$summedPrice = Cart::get($itemId)->getPriceSum();
// get an item on a cart by item ID for a specific user's cart
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->get($itemId); Getting cart's contents and count: Cart::getContent() /**
* get the cart
*
* @return CartCollection
*/
$cartCollection = Cart::getContent();
// NOTE: Because cart collection extends Laravel's Collection
// You can use methods you already know about Laravel's Collection
// See some of its method below:
// count carts contents
$cartCollection->count();
// transformations
$cartCollection->toArray();
$cartCollection->toJson();
// Getting cart's contents for a specific user
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->getContent($itemId); Check if cart is empty: Cart::isEmpty() /**
* check if cart is empty
*
* @return bool
*/
Cart::isEmpty();
// Check if cart's contents is empty for a specific user
$userId = auth()->user()->id; // or any string represents user identifier
Cart::session($userId)->isEmpty(); Get cart total quantity: Cart::getTotalQuantity() /**
* get total quantity of items in the cart
*
* @return int
*/
$cartTotalQuantity = Cart::getTotalQuantity();
// for a specific user
$cartTotalQuantity = Cart::session($userId)->getTotalQuantity(); Get cart subtotal: Cart::getSubTotal() /**
* get cart sub total
*
* @return float
*/
$subTotal = Cart::getSubTotal();
// for a specific user
$subTotal = Cart::session($userId)->getSubTotal(); Get cart total: Cart::getTotal() /**
* the new total in which conditions are already applied
*
* @return float
*/
$total = Cart::getTotal();
// for a specific user
$total = Cart::session($userId)->getTotal(); Clearing the Cart: Cart::clear() /**
* clear cart
*
* @return void
*/
Cart::clear();
Cart::session($userId)->clear(); ConditionsLaravel Shopping Cart supports cart conditions. Conditions are very useful in terms of (coupons,discounts,sale,per-item sale and discounts etc.) See below carefully on how to use conditions. Conditions can be added on: 1.) Whole Cart Value bases 2.) Per-Item Bases First let's add a condition on a Cart Bases: There are also several ways of adding a condition on a cart: NOTE: When adding a condition on a cart bases, the 'target' should have value of 'subtotal' or 'total'. If the target is "subtotal" then this condition will be applied to subtotal. If the target is "total" then this condition will be applied to total. The order of operation also during calculation will vary on the order you have added the conditions. Also, when adding conditions, the 'value' field will be the bases of calculation. You can change this order by adding 'order' parameter in CartCondition. // add single condition on a cart bases
$condition = new \Darryldecode\Cart\CartCondition(array(
'name' => 'VAT 12.5%',
'type' => 'tax',
'target' => 'subtotal', // this condition will be applied to cart's subtotal when getSubTotal() is called.
'value' => '12.5%',
'attributes' => array( // attributes field is optional
'description' => 'Value added tax',
'more_data' => 'more data here'
)
));
Cart::condition($condition);
Cart::session($userId)->condition($condition); // for a speicifc user's cart
// or add multiple conditions from different condition instances
$condition1 = new \Darryldecode\Cart\CartCondition(array(
'name' => 'VAT 12.5%',
'type' => 'tax',
'target' => 'subtotal', // this condition will be applied to cart's subtotal when getSubTotal() is called.
'value' => '12.5%',
'order' => 2
));
$condition2 = new \Darryldecode\Cart\CartCondition(array(
'name' => 'Express Shipping $15',
'type' => 'shipping',
'target' => 'subtotal', // this condition will be applied to cart's subtotal when getSubTotal() is called.
'value' => '+15',
'order' => 1
));
Cart::condition($condition1);
Cart::condition($condition2);
// Note that after adding conditions that are targeted to be applied on subtotal, the result on getTotal()
// will also be affected as getTotal() depends in getSubTotal() which is the subtotal.
// add condition to only apply on totals, not in subtotal
$condition = new \Darryldecode\Cart\CartCondition(array(
'name' => 'Express Shipping $15',
'type' => 'shipping',
'target' => 'total', // this condition will be applied to cart's total when getTotal() is called.
'value' => '+15',
'order' => 1 // the order of calculation of cart base conditions. The bigger the later to be applied.
));
Cart::condition($condition);
// The property 'order' lets you control the sequence of conditions when calculated. Also it lets you add different conditions through for example a shopping process with multiple
// pages and still be able to set an order to apply the conditions. If no order is defined defaults to 0
// NOTE!! On current version, 'order' parameter is only applicable for conditions for cart bases. It does not support on per item conditions.
// or add multiple conditions as array
Cart::condition([$condition1, $condition2]);
// To get all applied conditions on a cart, use below:
$cartConditions = Cart::getConditions();
foreach($cartConditions as $condition)
{
$condition->getTarget(); // the target of which the condition was applied
$condition->getName(); // the name of the condition
$condition->getType(); // the type
$condition->getValue(); // the value of the condition
$condition->getOrder(); // the order of the condition
$condition->getAttributes(); // the attributes of the condition, returns an empty [] if no attributes added
}
// You can also get a condition that has been applied on the cart by using its name, use below:
$condition = Cart::getCondition('VAT 12.5%');
$condition->getTarget(); // the target of which the condition was applied
$condition->getName(); // the name of the condition
$condition->getType(); // the type
$condition->getValue(); // the value of the condition
$condition->getAttributes(); // the attributes of the condition, returns an empty [] if no attributes added
// You can get the conditions calculated value by providing the subtotal, see below:
$subTotal = Cart::getSubTotal();
$condition = Cart::getCondition('VAT 12.5%');
$conditionCalculatedValue = $condition->getCalculatedValue($subTotal);
$cartTotal = Cart::getSubTotal(); // the subtotal with the conditions targeted to "subtotal" applied
$cartTotal = Cart::getTotal(); // the total with the conditions targeted to "total" applied
$cartTotal = Cart::session($userId)->getSubTotal(); // for a specific user's cart
$cartTotal = Cart::session($userId)->getTotal(); // for a specific user's cart Next is the Condition on Per-Item Bases. This is very useful if you have coupons to be applied specifically on an item and not on the whole cart value.
Now let's add condition on an item. // lets create first our condition instance
$saleCondition = new \Darryldecode\Cart\CartCondition(array(
'name' => 'SALE 5%',
'type' => 'tax',
'value' => '-5%',
));
// now the product to be added on cart
$product = array(
'id' => 456,
'name' => 'Sample Item 1',
'price' => 100,
'quantity' => 1,
'attributes' => array(),
'conditions' => $saleCondition
);
// finally add the product on the cart
Cart::add($product);
// you may also add multiple condition on an item
$itemCondition1 = new \Darryldecode\Cart\CartCondition(array(
'name' => 'SALE 5%',
'type' => 'sale',
'value' => '-5%',
));
$itemCondition2 = new CartCondition(array(
'name' => 'Item Gift Pack 25.00',
'type' => 'promo',
'value' => '-25',
));
$itemCondition3 = new \Darryldecode\Cart\CartCondition(array(
'name' => 'MISC',
'type' => 'misc',
'value' => '+10',
));
$item = array(
'id' => 456,
'name' => 'Sample Item 1',
'price' => 100,
'quantity' => 1,
'attributes' => array(),
'conditions' => [$itemCondition1, $itemCondition2, $itemCondition3]
);
Cart::add($item);
Then Finally you can call Cart::getSubTotal() to get the Cart sub total with the applied conditions on each of the items. // the subtotal will be calculated based on the conditions added that has target =& |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论