PHPackages                             ingenius/shopcart - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ingenius/shopcart

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ingenius/shopcart
=================

Ingenius ShopCart Package

1.7.0(2mo ago)082MITPHPPHP ^8.2

Since Jul 24Pushed 2mo agoCompare

[ Source](https://github.com/Ingenius-Click/shopcart)[ Packagist](https://packagist.org/packages/ingenius/shopcart)[ RSS](/packages/ingenius-shopcart/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (8)Versions (21)Used By (0)

Ingenius ShopCart
=================

[](#ingenius-shopcart)

A Laravel package for implementing shopping cart functionality with modifiers support.

Installation
------------

[](#installation)

```
composer require ingenius/shopcart
```

Features
--------

[](#features)

- Add products to cart (supports polymorphic relationships)
- Remove products from cart
- Delete cart items
- Get cart items
- Cart modifiers system for extending functionality
- Session-based cart for guests
- User-based cart for authenticated users

Configuration
-------------

[](#configuration)

### Environment Variables

[](#environment-variables)

```
PRODUCT_MODEL=Ingenius\Products\Models\Product

```

> Note: For backward compatibility, `SHOPCART_PRODUCT_MODEL` is still supported but `PRODUCT_MODEL` is preferred as it's used across all packages.

ShopCart Modifier System
------------------------

[](#shopcart-modifier-system)

The ShopCart package includes a modifier system that allows other packages to extend the cart's functionality without the ShopCart package needing to know about them.

### Features

[](#features-1)

- Add custom calculations to the cart total (shipping, discounts, taxes, etc.)
- Extend the cart's JSON/array output with additional data
- Control the execution order of modifiers using priorities
- Easy to implement in other packages

### How It Works

[](#how-it-works)

The ShopCart uses a pipeline approach with modifiers that:

1. Calculate subtotals in priority order (lower numbers run first)
2. Extend the `toArray()` output with custom values from each modifier
3. Allow precise control over execution order

### Creating Your Own Modifier

[](#creating-your-own-modifier)

To create a new cart modifier in your package:

1. Create a class that extends `BaseCartModifier` or implements `CartModifierInterface`
2. Set its priority to control when it runs (lower = earlier)
3. Register it with the `CartModifierManager` in your package's service provider

#### Example Modifier

[](#example-modifier)

```
