lenius/laravel-ecommerce

Shopping basket package for laravel 10 & 11

v2.0.5 2024-03-13 19:26 UTC

This package is auto-updated.

Last update: 2024-04-14 23:01:14 UTC


README

Latest Version on Packagist tests Code Coverage Total Downloads License

Installation

You can install this package via composer using:

composer require lenius/laravel-ecommerce

You can then export the configuration:

php artisan vendor:publish --provider="Lenius\LaravelEcommerce\EcommerceServiceProvider" --tag="config"
php artisan vendor:publish --provider="Lenius\LaravelEcommerce\EcommerceServiceProvider" --tag="lang"
php artisan vendor:publish --provider="Lenius\LaravelEcommerce\EcommerceServiceProvider" --tag="views"

Overview

Look at one of the following topics to learn more

Usage

The shoppingcart gives you the following methods to use:

Cart::insert()

Adding an item to the cart is really simple, you just use the insert() method, which accepts a variety of parameters.

In its most basic form you can specify the id, name, quantity, price of the product you'd like to add to the cart.

Cart::insert(new Item([
    'id'       => 'foo',
    'name'     => 'bar',
    'price'    => 100,
    'quantity' => 2,
    'weight'   => 300
]));

Cart::insert() accept a class which implements ItemInterface

class CustomItem implements ItemInterface
{

}

Inserting items with options into the cart

Inserting an item into the cart is easy. The required keys are id, name, price and quantity, although you can pass over any custom data that you like. If option items contains price or weight there values are added to the total weight / price of the product.

Cart::insert(new Item([
    'id'         => 'foo',
    'name'       => 'bar',
    'price'      => 100,
    'quantity'   => 2,
    'weight'     => 300,
    'options'    => [
       [
        'name'   => 'Size',
        'value'  => 'L',
        'weight' => 50,
        'price'  => 10
       ],
     ],
]));

Setting the tax rate for an item

Another key you can pass to your insert method is tax'. This is a percentage which you would like to be added onto the price of the item.

In the below example we will use 25% for the tax rate.

Cart::insert(new Item([
    'id'       => 'mouseid',
    'name'     => 'Mouse',
    'price'    => 100,
    'quantity' => 1,
    'tax'      => 25,
    'weight'   => 200
]));

Updating items in the cart

You can update items in your cart by updating any property on a cart item. For example, if you were within a cart loop then you can update a specific item using the below example.

foreach (Cart::contents() as $item) {
    $item->name = 'Foo';
    $item->setQuantity(1);
}

Destroying/emptying the cart

You can completely empty/destroy the cart by using the destroy() method.

Cart::destroy()

Retrieve the cart contents

You can loop the cart contents by using the following method

Cart::contents();

You can also return the Cart items as an array by passing true as the first argument

Cart::contents(true);

Check if the Cart has an item

Cart::has($itemIdentifier);

Remove an item from the Cart

Cart::remove($itemIdentifier)

Increment an item from the Cart

Cart::inc($itemIdentifier)

Decrement an item from the Cart

Cart::dec($itemIdentifier)

Events

The cart also has events build in. There are five events available for you to listen for.

Event Fired Parameter
CartItemUpdated When an item in the cart was updated. The CartItem that was updated.
CartItemRemoved When an item is removed from the cart. The CartItem that was removed.
CartItemDecreased When an item is dec from the cart. The CartItem that was decreased.
CartItemIncremented When an item is inc from the cart. The CartItem that was incremented.
CartDestroyed When the cart was destroyed. -

Testing

Run the tests with:

composer psalm
composer stan
composer test
composer test-coverage

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security-related issues, please email info@lenius.dk instead of using the issue tracker.

License

The MIT License (MIT). Please see License File for more information.